打印
[其他ST产品]

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

[复制链接]
152|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2022-12-8 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请求大佬指导一下。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);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1413

主题

3779

帖子

5

粉丝