当不需要PWM的时候,需要将相应的端口设置为固定电平,这里分享一个TIM_ForcedOC1Config函数。需要注意的是,如果不是PWM和普通IO口切换,那么强制输出的电平和选择的极性有关。
工具/原料
Keil
Saleae Logic
强制P输出低N输出高
1、设置OC输出模式为PWM2,N极性为High,P极性也未High。
2、调用TIM_ForcedOC1Config(TIM1, TIM_ForcedAction_InActive);强制输出无效。
3、测试显示,P极空闲时输出低电平,N极输出高电平,因为按上面的配置P极无效电平为低电平,N无效电平为高电平。
改变配置对强制输出的影响
1、PWM1和PWM2模式不改变强制输出的电平:试试将PWM2改为PWM1.输出结果显示PWM1和PWM2对TIM_ForcedOC1Config(TIM1, TIM_ForcedAction_InActive);没有影响。
2、PWM极性对强制输出的影响:改变一下N极的极性,之前为High,现在调整为Low。之前设置的N极极性为High,调用TIM_ForcedOC1Config(TIM1, TIM_ForcedAction_InActive);空闲时输出高电平,现在改为Low输出低电平,即对于Low极性的N通道,无效电平为低,与P极相反,跟预计的一致。
3、Active和InActive的区别:保持P极性为High,N极性为Low,将TIM_ForcedOC1Config(TIM1, TIM_Forced帆歌达缒Action_InActive);改为TIM_ForcedOC1Config(TIM1, TIM_ForcedAction_Active);即强制输出有无效改为有效。可以看到强制输出为有效后,对于P通道High有效,N通道Low有效时P输出高,N输出高。由此验证TIM_ForcedOC1Config();的第二个参数决定强制输出有效电平的状态。
4、TIM_CtrlPWMOutputs();对强制输出的影响:试试在TIM_掂迎豢畦ForcedOC1Config前调用TIM_CtrlPWMOutputs(TIM1, DISABLE);禁止PWM输出。PWM空闲时变为低电平,强制输出变得无效了!即强制输出的前提是PWM输出没有被禁止。同时及时调用了强制输出也不能禁止PWM输出,否则依然不能强制输出。