深入解析STM32定时器中断功能及工作原理
目录
三种定时器的区别
通用定时器功能特点的描述
STM32的众多定时器中我们使用最多的是高级定时器和通用定时器,而高级定时器一般也是用作通用定时器的功能,下面我们就以通用定时器为例进行讲解,其功能和特点包括:
通用与基本定时器(2~7)位于低速的APB1总线上
高级定时器(1、8)位于高速的APB2总线上
自动装载计数器(TIMx_CNT)有16 位向上、向下、向上/向下(中心对齐)计数模式。
预分频器(TIMx_PSC)是16 位可编程(可以实时修改)的,计数器时钟频率的分频系数由它设置,可以为 1~65535 之间的任意数值。
每个定时器都有4个独立的通道,这4个通道与相应的引脚一一对应可以查表
4 个独立通道(TIMx_CH1~4),这些通道功能可以用来作为:
可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器): (前4件用的比较多)
STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。
使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。
时基单元
时基单元包含:

计数器模式

时钟选择
计数器时钟可由下列时钟源提供:两个内部时钟、两个外部时钟
基本定时器的功能只占通用定时器的一部分,所以学习基本定时器比较简单易上手,新手先看参考手册的基本定时器章节。
先掌握基本定时器是最佳的选择。
计算定时器时钟频率(两个总线频率不同)以APB1为例:
如果AHB=72M,APB1由AHB分频可得不同的频率72/1,72/2,72/4,72/8,72/16。
PCLK1最大为36M不能1分频(这里不会用到它)
TIMxCLK的值由APB1决定,APB1=AHB/1时,TIMCLK=APB1;APB1=AHB/2、4、8、16时,TIMCLK=APB1×2=AHB/2、4、8、16×2。
例AHB=72,APB1=72,则TIMCLK=72
例AHB=72,APB1=36,则TIMCLK=72÷2×2
实验:定时器中断
例:计算溢出时间每500ms产生更新中断
Tout=(ARR+1)÷[(TIMCLK)÷(PSC+1)]
例500ms=(4999+1)÷[(72M)÷(7199+1)]
与中断有关的位:UIF位、UIE位