本帖最后由 motor666 于 2022-3-20 21:37 编辑
项目需求:管脚脉冲沿触发到来时,PWM管脚立即输出高电平(不能有等待时间),以后正常输出PWM脉冲。我用TIME8的TIM_CHANNEL_1输出脉冲,设定TIM8->ARR = XXXXX; TIM8->CCR1 = TIM8->ARR; TIM8->CCR1 >>= 1; 让占空比为1:1,触发脉冲到来时,TIM8->CNT = TIM8->CCR1 - 2; 让CNT不从0开始,而是只差2就输出高电平,打开PWM:HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1); 结果的确立即输出了高电平,只是第1个脉冲的宽度是正常的一半,如下图,下图是测量的反逻辑,显示低电平其实是高电平:
根据PWM的原理,TIM8->CNT = CCR1 时,应输出高电平,CNT继续计数,直到ARR时,才翻转为低电平,如下图:
一直想不明白,为什么第1个脉冲变窄了。
|