> 文章列表 > 嵌入式学习笔记——通用定时器

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

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

通用定时器

  • 前言
  • 通用定时器概述
    • 通用定时数量
    • 简介
    • 特性
  • 框图介绍
    • 时钟选择部分
      • 未完待续,明日继续

前言

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

通用定时器概述

原本是打算继续偷懒找免费工具人来做介绍的,但是它罢工了
AI:“我摆烂了,你自己来”
嵌入式学习笔记——通用定时器

通用定时数量

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

简介

具体有哪些区别呢,看看手册的简介,关于简介部分,只有TIM2到TIM5的描述中提到了有32位寄存器的区别,其他的都一样,也就是说通用定时器内部有一个16位或者32位的自动重装载计数器,然后也有类似基本定时器的预分频器,那必然也可以实现延时和定时中断,除此之外还包括了输入捕获和生成输出波形(输出比较和PWM)的功能,这里的输入捕获输出比较就是通用定时具有的而基本定时器不具有的功能,至于这两到底是个啥,我们后面再介绍。
嵌入式学习笔记——通用定时器
嵌入式学习笔记——通用定时器

特性

上面的简介也没区分出两组通用定时器的区别,接下来看看他们的特性看看能不能找到区别。
首先是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功能一样,后面用上了再介绍,暂时可以忽略不看,选择好时钟后,接下来的红色框位置就很熟悉了,跟基本定时器的一模一样,也是预分频器,重装载器,和计数器,而且,也有一样的影子寄存器,说明在配置过程中也需要人为产生更新事件。

未完待续,明日继续