STM32
直播中

杨春林

7年用户 923经验值
私信 关注
[问答]

STM32H7/L4定时器更改周期之后的前两个周期输出异常的原因?

STM32定时器计数周期设为0xFF(累加256次溢出),比较值设为0x7F,在某一时刻将新的计数周期0x7F与比较值0x3F加载到影子寄存器(即,在当前计数周期结束后,新的周期值将自动加载,也就是不立即更新)。当正在进行的一个周期结束后,经示波器测量确实可以看到其下一个周期发生了变化,但其周期明显与预设值对应不上!再次经过一个周期,定时器才可安照预设值稳定输出。
目前已在H7/L4上发现此问题,定时器分频系数为1。此外,使用定时器输出PWM时也有相同情况出现,即改变PWM频率后的前两个周期输出不对。也有网友提及但未解决。
可简单通过cubeMX配置定时器,随后在比较中断内翻转IO,经示波器测量复现此问题。

回帖(1)

刘红

2024-3-18 15:56:39
为了保证输出波形完整性,建议你开启ARR及CCR的预装功能,在CubeMx配置时选择下即可。

开启预装后,修改ARR及CCR的值,生效时间点最长可能延后1个计数周期。

不过这里要注意下,你修改ARR及CCR的值最好在一个计数周期内完成,不要一个在某更新事件之前

完成赋值,另一个则在该更新事件之后完成赋值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分