关于stm32输出比较不同模式的分析

关于stm32输出比较不同模式的分析


输出比较模式总共有6种。分别是:

  • TIM_OCMode_Timing 输出比较时间模式 (输出引脚冻结无效)
  • TIM_OCMode_Active 输出比较主动模式 (匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输出为高电平
  • TIM_OCMode_Inactive 输出比较非主动模式 (匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平)
  • TIM_OCMode_Toggle 输出比较翻转触发模式(当计数值与比较/捕获寄存器值相同时,翻转输出引脚的电平)
  • TIM_OCMode_PWM1 向上计数时,当TIMx_CNT < TIMx_CCR时,输出电平有效,否则为无效向下计数时,当TIMx_CNT > TIMx_CCR时,输出电平无效,否则为有效。
  • TIM_OCMode_PWM2 向上计数时,当TIMx_CNT > TIMx_CCR时,输出电平有效,否则为无效向下计数时,当TIMx_CNT < TIMx_CCR时,输出电平无效,否则为有效。

其中,PWM是最重要也是最常用的模式,很多资料分析的很透彻,这里不再赘述。
输出比较时间模式的输出引脚会被冻结,此模式通常用于产生普通的定时器中断。
其余几个模式中,当“当计数值为比较/捕获寄存器值相同时” 即CCRX=CNT时,会引发后面所说的事件。而TIM_OCMode_Active与TIM_OCMode_Inactive仅触发一次,之后就会出现一直为高电平或者低电平。TIM_OCMode_Toggle会每次在CCRX=CNT时都翻转,所以也形成一个PWM。由于一个周期只翻转一次,占空比只会是百分之五十,周期为参数period的两倍,频率为1/2。

你可能感兴趣的:(stm32,c++,mcu,arm)