STM32 HAL库PWM回调函数的特性

本文解析HAL_TIM_PWM_PulseFinishedCallback的作用,它与PeriodElapsed的区别,以及在多通道SPWM中的应用注意事项。了解如何避免PWM计数误差和同步问题,适合HAL库 PWM 中断管理的学习者。

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

HAL_TIM_PWM_PulseFinishedCallback函数

这是HAL库中PWM相关中断回调函数。

一、用法

想要启动这个函数,需在CubeMX上配置好定时器的PWM相关参数,并在NVIC中打开相应定时器的中断,相应的配置就不赘述了。
然后在main函数中使用HAL_TIM_PWM_Start_IT开启PWM的初始化。

二、HAL_TIM_PWM_PulseFinishedCallback与HAL_TIM_PeriodElapsedCallback的区别

Pulsd Finish函数的触发是产生于计数器比较完成时,也就是PWM模式1(向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平)下,高电平结束的时候。

而Period Elapsed则是在整个周期结束时,也就是ARR计数溢出时触发。

三、总结

在使用单定时器多通道时,比如产生同频率的三路SPWM时,若每个通道的CCR也就是占空比设置不同时,一个周期内会产生三个不同的中断,此时HAL_TIM_PulseFinishedCallback函数会被调用3次。

若是在HAL_TIM_PWM_PulseFinishedCallback里对产生的PWM脉冲进行计数并赋值新的占空比,会出现:
1.PWM脉冲的个数对不上,其输出频率会大于我们期望的频率。
2.占空比丢失,某通道的比较完成触发中断后,同时更新了其他通道的占空比,则其CCR已经小于CNT,立即对其进行脉冲反转,而丢失信号。

因此,若是仅仅对脉冲计数,应使用定时器中断而非PWM比较中断,以保证多路PWM的同步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值