[STM32] 实时修改PWM波的输出频率

  • Post author:
  • Post category:其他


最近在做PWM的电机控制,需要通过修改PWM的频率来控制电机的速度。

使用如下的函数:

void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);

该函数可修改定时器的ARR值,使得定时器的周期改变。

在使用时,总是会随机的出现PWM输出消失的情况,通过排查,在调用TIM_SetAutoreload()函数时,需要初始化使能定时器的Preload功能,调用如下函数:

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)

TIM_ARRPreloadConfig(TIM2,ENABLE);

该功能使能是,ARR的值先暂存在影子寄存器,带ARR溢出后再更新ARR的值。

使能该功能后,该问题解决。



版权声明:本文为d4l6c8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。