野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6276|回复: 0

STM32使用一个定时器捕获2路PWM信号的问题

[复制链接]
发表于 2022-12-2 14:52:53 | 显示全部楼层 |阅读模式
请求大佬指导一下。STM32使用一个定时器捕获2路PWM信号的时候,我在初始化的过程中使用如下的初始化,可是为什么我只能捕获第2个通道的值,第一个通道的值会被覆盖,即GENERAL1_TIM_IC1_CHANEL这里的被替代,
初始化具体代码如下




TIM_ICInitTypeDef  TIM4_ICInitStructure;
    //捕获通道IC1配置,选择捕获通道
    TIM4_ICInitStructure.TIM_Channel =GENERAL1_TIM_IC1_CHANEL;   //CC1S=01 选择输入端 IC1映射到TI1上
   
    //设置为上升沿捕获
    TIM4_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
    //不滤波
    TIM4_ICInitStructure.TIM_ICFilter  =0X0;
    //1分频,即捕获信号的每个有效边沿都捕获
    TIM4_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1;
    // 设置捕获通道的信号来自于哪个输入通道,有直连和非直连两种,这里选择为直连
    TIM4_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI;
//    TIM_ICInit(GENERAL1_TIM,&TIM4_ICInitStructure);
    //初始化PWM模式
    TIM_PWMIConfig (GENERAL1_TIM,&TIM4_ICInitStructure);
   
    TIM4_ICInitStructure.TIM_Channel =GENERAL1_TIM_IC2_CHANEL;         //CC2S 选择输入端 IC2映射到TI2上
    TIM_PWMIConfig (GENERAL1_TIM,&TIM4_ICInitStructure);
    //TIM_ICInit(GENERAL1_TIM,&TIM4_ICInitStructure);
    //选择输入捕获的触发信号
    TIM_SelectInputTrigger(GENERAL1_TIM,TIM_TS_TI1FP1);
    TIM_SelectInputTrigger(GENERAL1_TIM,TIM_TS_TI2FP2);
   
    //选择从模式:复位模式
    //PWM输入模式时,从模式必须工作在复位模式,当捕获开始时,计数器CNT会被复位
    TIM_SelectSlaveMode(GENERAL1_TIM, TIM_SlaveMode_Reset);
    TIM_SelectMasterSlaveMode (GENERAL1_TIM,TIM_MasterSlaveMode_Enable);
   
    //清除中断标志位
    TIM_ClearITPendingBit(GENERAL1_TIM, TIM_IT_CC1 );
    TIM_ClearITPendingBit(GENERAL1_TIM, TIM_IT_CC2);
    //使能捕获中断,该中断是针对于主捕获通道(测量周期的那个)
    TIM_ITConfig (GENERAL1_TIM,TIM_IT_CC1 |TIM_IT_CC2,ENABLE);
    TIM_ITConfig (GENERAL1_TIM,TIM_IT_CC2,ENABLE);
    //使能计数器
    TIM_Cmd (GENERAL1_TIM,ENABLE);


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 14:52 , Processed in 0.037307 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表