STM32F407 TIM pwm 调试笔记, LL库
问题:调试STM32F407 TIM3定时器的PWM功能时,出现的问题,特此记录
- 初始化的时候,PWM引脚的电平是低,而我要求的是高电平。
- 定时器会在使能后立马进入一次中断;
配置:TIM3 CH3 被我设置成PWM1模式,有效电平是高,OC3PE置一,使能了预加载寄存器. 使能了定时器中断。定时器初始计数值是0。
功能需求:初始化的时候,默认成有效电平,使能定时器后,按照计数值来拉高拉低引脚。
分析:OC3PE置一后,CCR3 的初始值不会立即生效,需等待更新事件(UG 位触发或计数器溢出)才能加载到影子寄存器。若不主动触发更新事件,初始化时 CCR3 可能处于默认值(如 0),导致比较逻辑异常,所以需要手动更新一下EGR中的UG寄存器,
LL_TIM_GenerateEvent_UPDATE(TIM3)
手动更新后发现一个新的问题,更新会导致SR的UIF寄存器也更新,如果在此函数是处在中断使能之后,则立马会产生一个中断;
此时可以在先写UG,再清除UIF,再来使能中断。
LL_TIM_SetCounter(TIM3, 0); //清0,重新计数LL_TIM_DisableIT_UPDATE(TIM3);LL_TIM_GenerateEvent_UPDATE(TIM3);// 手动更新寄存器LL_TIM_ClearFlag_UPDATE(TIM3);LL_TIM_EnableIT_UPDATE(TIM3);//TIM3更新使能LL_TIM_EnableCounter(TIM3);//TIM3计数使能
这样的话,就不会产生提前的中断。