定时器分类
不同的芯片定时器的个数也是不同的,以STM32F103ZE有8个定时器(定时器的具体个数查相关手册)。
定时器的分类:高级定时器、通用定时器、基本定时器,这3类定时器的功能各不相同。
定时器种类 | 位数 | 定时器模式 | 产生DMA请求 | 捕获/比较通道 | 互补输出 | 特殊应用场景 |
---|---|---|---|---|---|---|
高级定时器(TIM1,TIM8) | 16 | 向上,向下,向上下 | 可以 | 4 | 有 | 带死区控制盒紧急刹车,可应用于PWM控制 |
通用定时器(TIM2-TIM5) | 16 | 向上,向下,向上下 | 可以 | 4 | 无 | 通用。定时器计数,PWM输出,输入捕获,输出比较 |
基本定时器(TIM6,TIM7) | 16 | 向上,向下,向上下 | 可以 | 4 | 无 | 主要应用于驱动DAC |
DMA(Direct Memory Access)即直接存储器访问,主要控制I/O设备与主存间交换信息。
PWM(Pulse Width Modulation)即脉冲宽度调制,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
DAC即数/模转换器的简称,是将数字型号转换为模拟型号的一种装置。
通用定时器定时器功能
1)位于APB1总线上(使用前要使能APB1时钟)
2)16位向上、向下、向上/下计数模式,自动装载计数器(TIMx_CNT)
①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新开始从0开始计数并且产生一个计数器溢出事件。
②向下计数模式:计数器从自动加载值(TIMx_ARR)的值开始,然后计数到0并且产生一个计数器溢出事件。
③向上/向下计数模式(中央对齐模式):计数器从0开始计数到自动加载(TIMx_ARR)-1的值,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
3)4个独立通道,通道功能:输入捕获、输出比较、PWM生成、单脉冲模式输出。
4)如下事假发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器)
①更新:计数器溢出,计数器初始化
②触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
③输入捕获
④输出比较
5)单脉冲模式:单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应一个激励,并在一个程序可控的延时之后,产生一个脉宽可程序控制的脉冲。
可以通过从模式控制器启动计数器,在输出比较模式或者PWM模式下产生波形。设置TIMx_CR1寄存器中的OPM位将选择单脉冲模式,这样可以让计数器自动地在产生下一个更新事件UEV时停止。
通用定时器工作过程:
通用定时器的时钟一共有4个:
1、来自RCC的TIMxCLK(内部时钟信号)
2、TIMx_ETR(外部时钟输入)
3、ITRx(来自其余定时器用于定时器的级联)
4、TIMx_CHx(外部通道)
这里的TIMx_ETR和TIMx_CHx都是实际引脚,但是TIMx_ETR是外部时钟的引脚,而TIMx_CHx是具有定时器功能的引脚。具体理解需要后面的深度学习,主要还是会使用来自RCC的内部时钟。
输入捕获
捕获输入脉冲的上升沿和下降沿,一般常用来测量脉冲宽度。
输出比较
在规定的时间内,低电平和高电平的比例,就是脉冲波。假设定时器的模式为向上计数模式,TIMx_ARR=100在中间设置比较值为40,在0-40这段时间都是低电平41-100这段时间就是高电平,这样就可以形成脉冲波形。TIMx_ARR决定脉冲波形的频率,设置的中间的比较值决定脉冲波的占空比。