STM32 Timer预分频(PSC)设置
- 在STM32的定时器上,PSC用来将定时器时钟源进行分频输出,上图可知,预分频器的值是由TIMx_PSC设定,是16位正整数值。
- CubeMx设置定时器时钟源为内部时钟,其频率一般较高,STM32F030F6为例,其总线时钟为48Mhz, 定时器从0计数到65535只需要1.365ms [(1/48 * 65535) /1000]。
- 如果我们要设置更长时间间隔,就需要对预分频器进行分频处理,以降低定时器时钟的频率
- 以上面TIM1为例子,设置1ms中断,不分频处理,48MHz的时钟对应每周期1/48us。这个时候使用预分频器进行48分频为1Mhz,每周期为1us, 1000个计数周期为1ms,便于计算。
预分频器的工作原理
- 定时器时钟源没tick一次,预分频器计数值+1,直到达到预分频器设置的值,然后再tick一次归0,同时CNT计数器值+1.
- 因此,达到最大值还要tick一次归零,所以定时器时钟频率为Fsoc/(PSC+1), Fosc是定时器时钟源,比如相对时钟源进行48分频,那么预分频器的值就设置为48-1.
- 需要注意的是,定时器启动后更改TIMx_PSC值不会立即影响当前定时器的频率,要等到下个更新时间UEV的发生才生效。
- psc 1->4(即TIMx_PSC由0改为3)
CubeMx设置
- 上图是时钟源进行24分频,Reload值为100,因此产生200us一次的中断。