# stm32 6-1Tim 定时器中断

stm32 拥有 16 位计数器,预分频器,自动重装寄存器的实际单元。如果预分频器和自动重装寄存器都设置最大,2 的 16 次方,因为 2 的 16 次方为 66536

在 72MHz 计数时钟下可以实现最大 59.65s 的定时

这部分之后再听一遍

不仅具有基本的定时中断功能,而且还包括内外时钟源的选择,输入捕获,输出比较,编码器接口,主从触发模式等多种功能

![](C:\all study document\Microcontroller study\32\ 图片笔记 \Snipaste_2023-08-24_22-05-54.png)

时基单元:由自动重装寄存器,预分频器与 CNT 计数器组成,预分频器之前,连接的就是基准计数时钟的输入,最终来到了控制器的这个位置,由于基本定时器只能选择内部时钟,所以你可以直接认为这根线直接连接到了输入端这里,也就是内部时钟 CK_INT,内部时钟的来源是 RCC 的 TIMxCLK,这里的频率一般是内部系统的主频 72MHz

我们看时基单元,它可以首先对输入进来的 72MHz 计数时钟进行预分频,比如这个寄存器写 0,就是不分频,或者说是 1 分频,这个时候的输出频率等于输入频率等于 72MHz,如果预分频器写 1,就是 2 分频,那么输出的频率就为 36MHz,如果写 2,就是三分频,输出频率等于 72/3 等于 24MHz,以此类推

实际的分频系数等于预分频器的系数加一,这个预分频器是 16 位的,所以最大值可以写 65535,也就是最大 65536 分频的,这就是预分频器,就是对输入的频率提前进行预分频的操作

然后就是计数器,就是对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数时钟的值就加一,这个计数器也是 16 位的,可以从 0 计数到 65535;如果再加的话,计数器就会回到零,重新进行计数,所以计数器的值在运行过程中会不断进行自增运行,当自增达到目标值的时候,产生中断,就完成了定时的任务。

所以现在还需要一个存储目标值函数的计数器,就是自动重装载寄存器,自动重装载计数器也是 16 位的,它存储的就是我们的计数目标,在运行的过程中,计数值不断增加,自动重装值是固定的目标,当计数值等于重装计数器的值的时候,也就是即使时间到了,那它就会产生一个中断信号,并且清零计数器

在这里有一个向上的箭头,表示这里会产生一个中断信号,像这种计数值等于重装值产生的中断,我们一般称之为更新中断,这个更新中断之后,就会通往 NVIC,我们再配置好 NVIC 的定时器通道,那定时器的更新中断就能得到 CPU 的响应了,这里向下的箭头,代表这里会产生一个事件,这里对应的事件,就叫做更新事件