做旅游海报的软件或是网站,建设装饰网站,佛山免费自助建站模板,重庆做网站公司贴吧本文介绍了STM32基本定时器3个重要的寄存器PSC、ARR、CNT#xff0c;以及缓冲机制和计数细节。
基本定时器的框图 预分频器寄存器(TIMx_PSC)可以在运行过程中修改它的数值#xff0c;新的预分频数值将在下一个更新事件时起作用。因为更新事件发生时#xff0c;会把 TIMx_PS…本文介绍了STM32基本定时器3个重要的寄存器PSC、ARR、CNT以及缓冲机制和计数细节。
基本定时器的框图 预分频器寄存器(TIMx_PSC)可以在运行过程中修改它的数值新的预分频数值将在下一个更新事件时起作用。因为更新事件发生时会把 TIMx_PSC 寄存器值更新到其影子寄存器中这才会起作用。(该寄存器16位最大值为2^16-1即表示65536(2^16)分频)
自动重载寄存器及其影子寄存器的作用和上述同理。不同点在于自动重载寄存器是否具有缓冲作用还受到 ARPE 位的控制当该位置 0 时ARR 寄存器不进行缓冲我们写入新的 ARR 值时该值会马上被写入 ARR 影子寄存器中从而直接生效当该位置 1 时ARR 寄存器进行缓冲我们写入新的 ARR 值时该值不会马上被写入 ARR 影子寄存器中而是要等到更新事件发生才会被写入 ARR 影子寄存器这时才生效。预分频器寄存器则没有这样相关的控制位这就是它们不同点。(自动重载寄存器和计数器均为16位最大值为2^16-1即表示最多计65536(2^16)次)
总结
缓冲改变PSC或ARR寄存器的值后不会立即起作用而是发生更新事件后由各自的影子寄存器将值载入。
TIMx_PSC(预分频器寄存器)只能缓冲而TIMx_ARR(自动重载寄存器)可通过ARPE 位来选择是否缓冲(ARRE为0时该值立即生效没有缓冲。ARRE为1时具有缓冲功能)
更新事件的产生
1.由软件产生将 TIMx_EGR 寄存器的位 UG 置 1产生更新事件后硬件会自动将 UG 位清零。
2.由硬件产生满足以下条件即可 计数器的值等于自动重装载寄存器影子寄存器的值。 基本定时器的计数器CNT是一个递增的计数器当寄存器TIMx_CR1的 CEN 位置 1即使能定时器每来一个 CK_CNT 脉冲TIMx_CNT 的值就会递增加 1。当 TIMx_CNT 值 与 TIMx_ARR 的设定值相等时TIMx_CNT 的值就会被自动清零并且会生成更新事件。
若ARR的值为9则CNT需要溢出10次才生成更新事件。计数器记到自动加载值9后再来一个CK_CNT后计数值的变化 0__ 1__ 2__ 3__ 4__ 5__ 6__ 7__ 8__ 9__ 0__
第9个数记完之后再来一个脉冲产生溢出和更新事件粉紫色部分为溢出过程。
由CNT的时序图可以看出上述过程