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

简介 
在使用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模式1
TIM_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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
//在禁止定时器前,用软件强制定时器更新,可初始化电平
TIM_GenerateEvent(TIMx,TIM_EventSource_Update);
TIM_Cmd(TIMx,DISABLE)
  • 1
  • 2
  • 3

实测OK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值