关于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。