STM32 PWM调制信号关闭后端口电平不确定处理

来源:互联网 发布:推广平台源码 编辑:程序博客网 时间:2024/06/05 00:40

简介
在使用STM32的PWM做为调制信号时,遇到开关调制信号关闭后其信号不确定的问题,影响信号的调制,收集了些资料在这归纳整理。

方法
当IO设置成PWM模式以后GPIO_ResetBits等设置语句就不管用了,如果不考虑时间点,调用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);定会产生关闭PWM后端口的电平不确定的情况。有2种办法可以解决:
1、如果使用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);应该在需要关闭时,先开放更新中断,然后在更新中断中调用其中一个函数,这样才能保证关闭的动作与PWM输出周期同步;
2、如果不使用中断,可以在关闭PWM输出后,把对应的引脚配置为推挽输出或开路输出,然后再使用GPIO_ResetBits语句。

代码片

//初始化配置  /* PWM1 Mode configuration: Channel1 */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;       //PWM模式1TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  //当定时器计数值小于CCR1_Val时为高电平 (对应关闭PWM后端口的电平值)  //PWM1 Mode configuration: Channel2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = CCR1_Val;//跳变值TIM_OC2Init(TIM3, &TIM_OCInitStructure);     TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
//在禁止定时器前,用软件强制定时器更新,可初始化电平TIM_GenerateEvent(TIMx,TIM_EventSource_Update);TIM_Cmd(TIMx,DISABLE)

实测OK。

原创粉丝点击