我成功地通过使用以下命令动态更改了时钟TIM2的预分频器
__HAL_TIM_SET_PRESCALER(&htim2,newValue);但是,在计数器重置为零之前,它会以旧的速度计数。
我可以强制程序立即使用新的预分频值吗?
我正在使用STM32L052K8Tx
发布于 2021-10-27 11:23:31
STM32F10x参考手册(大多数STM32都有相同的计时器):
PSC包含在每次更新事件(包括通过TIMx_EGR寄存器的UG位或配置为“复位模式”时通过触发控制器清除计数器时)加载到有效预分频器寄存器中的值。
你必须等到计数器到零。可通过EGR寄存器中的UG位强制执行此事件,这将重置CNT并强制重新加载。如果你需要保持CNT值,不可能在没有获得Update事件的情况下使用PSC实时“调优”计时器速度。
但是您可以尝试使用一个计时器作为另一个计时器的预分频器,在主从模式下运行两个计时器。第一个定时器的ARR无需缓冲即可重新加载(TIMx_CR1中的APRE位=0),第二个定时器不受影响。请参阅参考手册中的“定时器同步”章节和示例,如库中的TIM_Synchronization。
https://stackoverflow.com/questions/69736381
复制相似问题