有两个定时器,一个输出PWM(TIM2),一个接受外部脉冲(TIM1);当高级定时器通道(ch1)接受一个脉冲时可以停止TIM2脉冲输出。高级定时器通道IO口用杜邦线与外部脉冲源连接。但目前遇到一个问题:杜邦线接上了IO口与外部脉冲源,本来外部没有输入脉冲,但TIM2不输出脉冲了???当我把杜邦线拔下后,TIM2正常输出,一接上,又不输出了。外部脉冲源根本没有发脉冲,着实有点不明白为什么TIM2会停止输出pwm??我也把杜邦线换了一下,情况跟上述一样。我发一下我输入捕获的一些代码,希望萌友们可以帮我看一下 sICConfig.ICPolarity = TIM_ICPOLARITY_RISING; // 捕获极性 上升沿 sICConfig.ICFilter = 0; // 输入滤波,取值范围是 0~0xF sICConfig.ICSelection = TIM_ICSELECTION_INDIRECTTI;// IC源选择,TI1FP1 sICConfig.ICPrescaler = TIM_ICPSC_DIV1; // 捕获事件分频 HAL_TIM_IC_ConfigChannel(&htim1,&sICConfig,TIM_CHANNEL_1); |
软件上可以使用sICConfig.ICFilter这个参数。 硬件上你可以尝试换个接法来验证。或者先将线结好然后再上电。
我试试,感谢你的建议
我尝试过这么做:用杜邦线将外部脉冲源与按键的IO相连,但出现了一个问题:就是按键按下去,不松开时,TIM2停止输出脉冲 ,如果我这个时候用通讯使TIM发脉冲,松开按键后TIM就会继续发脉冲。所以我才放弃外部中断,使用捕获