电子说
一、思维导图
三、定时器基本简介
(一)定时器分类
STM32F103微控制器的定时器分为 系统定时器(SysTick) 、 “看门狗”定时器(WatchDog) 、 基本定时器 、 通用定时器 、高级定时器和 实时时钟(RTC) 等。
(二)通用定时器的主要功能
1. 位于低速的APB1总线上 (注意:高级定时器是在高速的APB2总线上);
2. 16位向上、向下、向上/向下自动装载计数器(TIMx_CNT) ;
3. 16位可编程(可以实时修改)预分频器(TIMx_PSC), 计数器时钟频率的分频系数为1~65536之间的任意数值 ;
4. 4个独立通道(TIMx_CH1~4) ,这些通道可以用来作为: 输入捕获、输出比较、PWM生成 (边缘或中间对齐模式)、 单脉冲模式输出 ;
5. 使用外部信号控制定时器和定时器互连的同步电路 ;
6. 如下事件发生时产生中断/DMA :更新(计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发))、触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)、输入捕获、输出比较; 支持针对定位的增量(正交)编码器和霍尔传感器电路 ; 触发输入作为外部时钟或者按周期的电流管理 ;
7.STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。(使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。)
8. 每个通用定时器都是完全独立的,没有互相共享的任何资源 。
(四)通用定时器的PWM
利用STM32通用定时器的比较输出功能,可以很方便地输出PWM信号。脉冲宽度调制(Pulse Width Modulation,PWM)是广泛用于灯光亮度、电机调速的一种数字控制方法。
脉冲宽度与周期的比值称为占空比 ,脉冲宽度越大,则占空比越大。占空比越大的信号对应的LED亮度也越高。
如图(a)所示,首先将定时器设置为增加/减少计数模式,则主计数器由0开始加计数到自动重装载值Np,然后减计数到0,如此循环往复。图中的三角形表示计数值的变化曲线,三角形曲线的周期为T。
如果开启PWM输出模式,并将比较输出值设为Nc,则在定时器的PWM输出端会产生电平变化,当比较值Nc大于计数值n时,输出高电平;当比较值Nc小于计数值n时,输出低电平,如此循环往复可以产生一个周期为T的方波。
如图(b)所示,增加比较输出值Nc,按照以上规则会产生一个周期同样为T的方波,只是此时脉冲宽度ΔT增加,也就是占空比增加。
(五)通用定时器结构框图
通用定时器TIMx(TIM2~TIM5)的核心为可编程预分频器驱动的16位自动重装载计数器,主要由时钟源、时钟单元、捕获/比较通道等组成。
1. 时钟源的选择
通用定时器的时钟可由多种时钟输入源构成,除了内部时钟源,其他三种时钟源均通过TRGI(触发)输入。通用定时器的计数器时钟可由下列时钟源提供:
(1) 内部时钟(TIMx_CLK) 。
(2) 外部时钟模式1:外部捕捉比较引脚(TIx) ,外部输入引脚(TIx)包括外部比较/捕获引脚TIIF_ED、TI1FP1和TI2FP2,计数器在选定引脚的上升沿或下降沿开始计数。
(3) 外部时钟模式2:外部引脚输入(TIMx_ETR) ,外部触发输入引脚(ETR),计数器在ETR引脚的上升沿或下降沿开始计数。
(4) 内部触发输入(ITRx,x=0, 1, 2, 3) ,一个定时器作为另一个定时器的预分频器,如可以配置定时器TIM1作为定时器TIM2的预分频器。
这里定时器的内部时钟源并不是直接来自APB1或APB2,而是 来源于输入为APB1或APB2的一个倍频器 。当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率。当APB1的预分频系数为其他数值(预分频系数为2、4、8或16)时,这个倍频器才能够发挥作用,定时器的时钟频率等于APB1频率的2倍。(例:当AHB为72MHz时,APB1的预分频系数必须大于2,因为APB1的最大输出频率只能为36MHz。如果APB1的预分频系数为2,则由于这个倍频器2倍的作用,使得TIM2~TIM5仍然能够得到72MHz的时钟频率。若APB1的输出为72MHz,则直接取APB1的预分频系数为1就可以保证TIM2~TIM5的时钟频率为72MHz,但是这样就无法为其他外设提供低频时钟。当设置内部的倍频器时,可以在保证其他外设能够使用较低时钟频率的同时,使TIM2~TIM5仍能得到较高的时钟频率。)
外部时钟源作为通用定时器的时钟时,包括外部时钟模式1和外部时钟模式2两种** 。当从模式控制寄存器TIMx_SMCR的SMS=1时,外部时钟源模式1被选定,计数器可以在选定输入引脚的每个上升沿或下降沿计数。
当从模式控制寄存器TIMx_SMCR的ECE=1时,外部时钟源模式2被选定,计数器在ETR引脚的上升沿或下降沿开始计数。
STM32微控制器的定时器的时基单元,从时钟源送来的时钟信号,经过预分频器的分频,降低频率后输出信号CK_CNT,送入计数器计数。预分频器的分频取值可以是1~65536之间的任意数值,一个72MHz的输入信号经过分频后,最小可以产生接近100Hz的信号。
可编程通用定时器的 主要部分是一个16位计数器和与其相关的自动重装载寄存器 。该计数器可以在时钟控制单元的控制下,进行递增计数、递减计数或中央对齐计数(先递增计数,达到自动重装载寄存器的数值后再递减计数)。通过对时钟控制单元的控制,可以实现直接被清零或在计数值达到自动重装载寄存器的数值后被清零,也可以直接被停止或在计数值达到自动重装载寄存器的数值时被停止,还能够实现暂停一段时间计数后在时钟控制单元的控制下恢复计数等操作。
计数器计满溢出后,自动重装载寄存器TIMx_ARR将所保存的初值重新赋给计数器,以实现继续计数。
3. 捕获/比较通道
通用定时器上的每一个TIMx的捕获/比较通道都有一个捕获/比较寄存器(包含影子寄存器),包括捕获的输入部分(数字滤波、多路复用和预分频器)和输出部分(比较器和输出控制)。当一个通道工作在捕获模式时,该通道的输出部分会自动停止工作;反之,当一个通道工作在比较模式时,该通道的输入部分也会自动停止工作。
(1)捕获通道。当一个通道工作于捕获模式时,输入信号会从引脚经输入滤波、边沿检测和预分频电路后,控制捕获寄存器的操作。
(2)比较通道。当一个通道工作于比较模式时,程序将比较数值写入比较寄存器,定时器会不停地将该寄存器的内容与计数器的内容进行比较,一旦比较条件成立,就会产生相应的输出。
4. 定时时间的计算
Tout= ((arr+1)*(psc+1))/Tclk; Tclk :TIM3的输入时钟频率(单位为MHz)。 Tout :TIM3溢出时间(单位为us)。
例:计时1s,输入时钟频率为72MHz。
arr = 9999,psc = 7199。
Tout = ((arr+1)*(psc+1))/Tclk = ((9999+1) *(7199+1))/72=1M(us)=1(s)
(六)编写定时器中断
全部0条评论
快来发表一下你的评论吧 !