嵌入式学习笔记——通用定时器

前言

上一篇中介绍了STM32F407的基本定时器,它的功能与系统滴答差不太多,多了一个DAC的功能;本文将介绍一下基本定时器的升级款,STM32F407的通用定时器,既然是通用定时器,肯定是包涵了基本定时器的功能的,而且在它基础之上肯定还有着特别的功能,那么具体有那些不同呢,且看如下介绍。

通用定时器概述

原本是打算继续偷懒找免费工具人来做介绍的,但是它罢工了
AI:“我摆烂了,你自己来”
在这里插入图片描述

通用定时数量

首先,在了解一个片上外设之前,需要搞清楚它的数量,还是在芯片手册,对照发现,通用定时器有10个之多;上一篇中的基本定时器是TIM6和TIM7,那么通用定时器具体对应的是那十个呢。
在这里插入图片描述
打开中文编程手册,在第15章和第16章,有两章内容用来介绍通用定时器,分别是(TIM2到TIM5),(TIM9到TIM14)一共十个,那么新问题来了,既然都是通用定时器,为啥要分两章进行介绍呢。
在这里插入图片描述
关于为啥要分成两章,很明显的一个答案就是虽然都是通用定时器,但是他们彼此之间又有着一些区别。

简介

具体有哪些区别呢,看看手册的简介,关于简介部分,只有TIM2到TIM5的描述中提到了有32位寄存器的区别,其他的都一样,也就是说通用定时器内部有一个16位或者32位的自动重装载计数器,然后也有类似基本定时器的预分频器,那必然也可以实现延时和定时中断,除此之外还包括了输入捕获和生成输出波形(输出比较和PWM)的功能,这里的输入捕获输出比较就是通用定时具有的而基本定时器不具有的功能,至于这两到底是个啥,先大致做个了解
输出比较(通过IO口输出一段脉冲,PWM波:电机 舵机 彩灯 LED灯 屏幕亮度)
输入捕获(捕获一段脉冲,计数IO口得到高电或者低电平时间)
在这里插入图片描述
在这里插入图片描述

特性

上面的简介也没区分出两组通用定时器的区别,接下来看看他们的特性看看能不能找到区别。
首先是TIM9------TIM12的:首先他们的计数器是规定了计数方向的——向上计数。
然后是每个定时器有两个对应的通道可以实现输入捕获,输出比较、PWM产生、单脉冲输出,这个通道其实就是对应的GPIO口,这里说的是输入和输出的功能,在GPIO章节就提到了,GPIO口试单片机内部和外界进行数据交换的通道,所以这里的通道就是对应的IO口,至于怎么对应的,在后面编程的时候会介绍。
再然后就是多个定时器可以互连,以及中断的触发信号了,这个也在后面框图介绍的时候再说。
在这里插入图片描述
再来看看TIM2到TIM5的,可以发现第一点特性就与上面的不一样,这里有两个定时器(TIM2和TIM5)是32位的计数器;而且,TIM2到TIM5的计数方向有递增、递减、递减递增自动重装载(也就是中心对齐模式)三种模式,不像上面的只有递增模式,TIM2到TIM5是可以通过编程进行选择的,实际使用中一般采用递增或者递减,中心对其一般不用。
然后是第二个特性,与上面的也不太一样,TIM2-TIM5每个定时器有4个通道可以实现输入和输出功能,上面的TIM9-TIM12只有2个;
最后的不同就是,TIM2到TIM5还支持编码器的解码,以及霍尔传感器电路,这个多用于直流电机的闭环控制;还有一个外部时钟触发输入或者逐周期电流管理这些都是一些特定场合的专用功能。
在这里插入图片描述

框图介绍

经过上面的对比,可以发现,通用定时器的时钟基准:
1.计数器寄存器 (TIMx_CNT);
2.预分频器寄存器 (TIMx_PSC);
3.自动重载寄存器 (TIMx_ARR))。
与前面的基本定时器是类似的,几乎没有差别,主要是在这个基础上增加了一些功能,那么接下来就看看他们具体框图有些什么异同。
由于TIM9-TIM14只是在TIM2-TIM5的基础上做了删减,这里我们只看TIIM2到TIM5的框图,整体框图如下:
在这里插入图片描述

时钟选择部分

这个图稍微有点复杂,我们还是一部分一部分来看;
首先是红色标号的1和2,也就是下方的橙色框和亮蓝色框,根据以前看框图的经验,可以知道,TIMx_ETR、TIMx_CH1、TIMx_CH2就是GPIO口,可以由外部输入进来。其中1对应的是外部触发输入 ,也是时钟的选择之一;
2对应的是定时器的输入通道,可以发现定时器通道1也有一条黑线直接到了TRC前方的二选一数据选择器;除此之外,通道1和通道2再经过了对应的滤波器和边沿检测器后还各自有一条路指向了上方的编码器接口(图中红色和绿色线)TI1FP1与TI2FP2这个就是前面提到的和编码器的正交解码有关的。
在这里插入图片描述
看完了外部输入的信号,再看看内部的结构吧,
1. 首先是浅绿色的数字1所在的位置,他是直接给到了触发控制器的;这个是我们熟悉的,在上一篇的基本定时器中也出现了,这个对应的是定时器所挂靠总线的时钟,也叫内部时钟,大多数情况都是选择使用它。
2. 然后是浅绿色的2号位置,它是由1的外部触发输入的信号的,经过极性选择和边沿 输入滤波器以及检测器和预分频器的选择后最终一路提供给了从模式控制器的触发 (TRGI)一路作为ETRF直接给到了触发控制器。
3. 再然后就是浅绿色的3号位置也就是上图中棕色框的位置,这里的四个(ITRx)是内部触发输入 ,其作用就是选择使用一个定时器作为另一个定时器的预分频器,再使用两个定时器一个主模式一个从模式时需要配置,一般用不上,做个了解。
4. 最后就是浅绿色的4号位置也就是紫色框内的TI1 边沿检测器,这是通过定时器输入通道进来的边沿触发信号,也参与到后面的触发选择中。
上面提到的更触发选择相关的内部触发、边沿检测触发、外部触发如下图所示,这些都是从模式中需要选择配置的,正常情况是用不上的,只需要做个了解即可。
在这里插入图片描述
这里我们只需要知道时钟的选择有一下四种即可:
在这里插入图片描述
其中最常用还是第一个内部时钟(CK_INT),具体的定时器时钟和前面的基本定时器一样,需要根据挂靠总线的时钟频率来计算。
还有一个最右边的绿色的框,这个和基本定时器的DAC功能一样,后面用上了再介绍,暂时可以忽略不看。

计数器部分

选择好时钟后,接下来的红色框位置就很熟悉了,跟基本定时器的一模一样,也是预分频器,重装载器,和计数器,而且,也有一样的影子寄存器,说明在配置过程中也需要人为产生更新事件。
在这里插入图片描述

输入捕获与输出比较框图

看完了上半截的时基部分,接下来就是框图的下半部分;整体而言还可以分为两部分,一部分是左侧的输入捕获部分,另一部分是右侧的输出比较部分。二者共用了中间部分的寄存器,这说明在寄存器中会有部分是具有双重功能的,这个在后面寄存器介绍的时候会碰到,下面就来分别看看这两个部分。
在这里插入图片描述

输入捕获部分

如下图所示:最右边的红色框里面是定时器的输入通道,也就是对应的GPIO口
在这里插入图片描述
至于上面的异或门,是通过TIMx_CR2的TI1选择的,可以将通道2通道3连接到TI1输入,做个了解即可。
在这里插入图片描述

GPIO与输入通道的映射关系

这里说明一下GPIO与定时器通道的对应关系是固定的,在使用过程中需要查询数据手册的引脚映射表。复用功能引脚映射表在数据手册的第三章,如下图所示。
在这里插入图片描述
这个表在之前使用的串口的时候也用过,当时就是查询USART的对应的引脚。
举个栗子:打开这个表后,假设我们要找定时器2通道对应的引脚。
具体的查询步骤如下:

  1. 在表格上方第二栏向右查找,找到TIM2,如上图红色框的位置;
  2. 然后沿着这一列向下找,就会看见对应的通道TIM2_CH1、TIM2_CH2、TIM2_CH3、TIM2_CH4。
  3. 然后顺着这个通道向左看,就可以看见对应的管脚,如图蓝色的框,这样就找到了对应的通道的具体管脚;
  4. 最后就是初始化GPIO将其配置为复用功能,然后对对应的复用寄存器写入TIM2上方对应的AF1即可。
    在这里插入图片描述

输入滤波及边沿检测

信号通过GPIO进来后,首先会经过1号红色框各自的输入滤波器和边沿检测器,这个滤波器的具体参数和边沿检测的具体方式都是可以编程控制的,由于输入信号多种多样,在处理的时候需要根据不同信号的特征来进行调节。
在这里插入图片描述

输入信号的选择

然后就是2号绿色框,这是一个数据选择器,输入信号有三个,一个是来自本通道的输入信号TI1FP1、另一个是来自隔壁通道的TI2FP1,第三个是TRC;这说明定时器的不同通道之间和可以交叉配置,交叉使用,但是也不是所有的都可以交叉使用,图中通道1和通道2有交叉,通道3与通道4有交叉,其他各个通道之间是没有交叉的,前两个TI1FP1和TI2FP2都比较好理解,就是通过对应定时器通道输入的信号,那么TRC是什么呢,TRC也是前面提到的两个定时器串联做主从的时候,这个TRC就是从定时器给主定时器的信号,做个了解即可。
在这里插入图片描述

分频器

由编程选定固定的输入信号后,后面又来了一个分频器,这个分频器同样是可以编程控制的,它的作用就是调节触发周期的,举个栗子来说,当要做上升沿输入捕获时,如果这个分频器不分频则第一个上升沿到来时系统就可以捕获到这个上升沿,但是如果开启了2分频,那么就需要到第二个上升沿来到时才进行捕获,第一个上升沿是不会执行捕获操作的,一般的使用场景此处都是默认不配置分频的。

捕获/比较寄存器

经过前面致一系列操作后的输入信号最终进入捕获/比较寄存器,系统通过这个寄存器来获取捕获状态、时间。

输出比较部分框图

看完了输入捕获,再来看输出比较的部分,如下图所示,输出比较部分的框图比较简单,首先数据经过捕获/比较寄存器,然后来到各自通道的输出控制寄存器,经过配置后直接输出到了对应通道的GPIO口上。
在这里插入图片描述
以上是输入捕获和输出比较的简略框图,具体的框图介绍再下一篇的具体编程中再做介绍。

总结

本文主要是对STM32F407的通用定时器做个概述,主要是弄清楚通用定时器的数量,作用,与基本定时器的关系,了解一下输入捕获和输出比较的框图,文中如有错误欢迎批评指正。

猜你喜欢

转载自blog.csdn.net/qq_41954556/article/details/129735708