一、 计数部分图示
二、PSC作用(以STM32F103为例)
当使用72Mhz时钟时,由于CNT计数器是16位的寄存器,故最大计数值是0xFFFF(十进制为65535),而65535/72M=910us,即使用72Mhz时钟最多时间是910us产生一次更新(溢出)中断,想要得到1ms更新(溢出)中断,可以在CNT前再加一个定时器PSC。
当PSC=0时,72Mhz时钟给PSC一个时钟周期时,PSC直接发生更新(溢出)中断给CNT累加,即CNT的时钟频率就是72Mhz时钟的时钟频率;
当PSC=1时,72Mhz时钟给PSC一个时钟周期时,PSC累加到1,72Mhz时钟再发一个时钟周期,PSC溢出产生更新中断,即72Mhz时钟发送两个时钟周期CNT累加一次,相当于CNT的时钟频率是72Mhz时钟的二分之一;
当PSC=2时,同样的,72Mhz时钟发三个时钟周期CNT累加一次,即CNT的时钟频率是72Mhz时钟的三分之一。
三、PSC时序图
当预分频器的参数从1变到2时(预分频系数从1变成2),即预分频控制寄存器的值从0变到1,此刻定时器时钟CK_CNT的频率不会马上改变,而是需要计数到ARR(自动重装载寄存器)设定的值,即溢出发送更新事件(UEV)才会将定时器时钟的频率改变。
四、自动重装载值更改
当ARPE寄存器等于0时,更改ARR的值时,会立刻生效,即更改时刻起,计数器计数到更改后的值就发生更新事件。
当ARPE寄存器等于1时,更改ARR的值时,不会立刻生效,而是要等到计数器计数到更改前的ARR值发生更新事件后才会生效。
五、自动加载影子寄存器
将计数图细分一下,即改变自动重装载寄存器的值后,当ARPE寄存器等于0时,自动重装载寄存器的值会立刻放入影子寄存器,即计数值立刻生效,当ARPE寄存器等于1时,自动重装载寄存器的值不会立刻放入影子寄存器,只有当CNT计数器溢出产生更新事件时自动重装载寄存器的值才会放入影子寄存器,从而让计数值生效。