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

本文探讨了在PWM电机控制中,通过修改PWM频率控制电机速度的方法。作者遇到PWM输出偶尔消失的问题,并发现这与定时器的ARR值更新有关。通过使能定时器的Preload功能,即先将ARR值暂存于影子寄存器,待ARR溢出后再更新,成功解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近在做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的值。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值