学习嵌入式(七)入门通用定时器笔记

一、通用定时器简介

STM32F103 有 4 个通用 定时器(TIM2~TIM5)。这些定时器彼此完全独立,不共享任何资源。

主要特性:16位递增、递减、中心对齐计数器(计数值:0~65535);16位预分频器(分频系数:1~65536);可用于触发DAC、ADC;在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求,4个独立通道,可用于:输入捕获、输出比较、输出PWM、单脉冲模式,使用外部信号控制定时器且可实现多个定时器互连的同步电路,支持编码器和霍尔传感器电路等。

二、通用定时器框图

① 时钟源

1)内部时钟(CK_INT)

       STM32F1 系列的定时器 TIM2/TIM3/TIM4/TIM5/ TIM6/TIM7 都是挂载在 APB1 总线上,这 些定时器的内部时钟(CK_INT)实际上来自于 APB1 总线提供的时钟。但是这些定时器时钟不是 由 APB1 总线直接提供,而是要先经过一个倍频器。

        如果 APB2 预分频系数为 1,挂载在该总线 的定时器时钟频率不变,否则频率是该总线时钟频率的 2 倍。在系统时钟初始化函数 sys_stm32_clock_init 已经设置 APB2 总线时钟频率为 72MHz,APB2 预分频器的预分频系数为 1,所以 TIM1 和 TIM8 时钟源频率为 72MHz。

高级定时器 TIM1 和 TIM8 是挂载在 APB2 总线上的

2)外部时钟模式 1:外部输入引脚(TIx),x=1,2(即只能来自于通道 1 或者通道 2)

        时钟源进入定时器的流程 如下:外部时钟源信号→IO→TIMx_CH1(或者 TIMx_CH2),这里需要注意的是:外部时钟模 式 1 下,时钟源信号只能从 CH1 或者 CH2 输入到定时器。从 IO 到 TIMx_CH1(或者 TIMx_CH2),就需要我们配置 IO 的复用功能,才能使 IO 和定时器通道相 连通。

TI2(CH2) 首先经过一个滤波器,由 ICF[3:0]位来设置滤波方式,也可以设置不使用滤波器。

接着经过边沿检测器,由 CC2P 位来设置检测的边沿,可以上升沿或者下降沿检测。

然后经过触发输入选择器,由 TS[4:0]位来选择 TRGI(触发输入信号)的来源。图中框出了 TI1F_ED、TI1FP1 和 TI2FP2 三个触发输入信号(TRGI)。TI1F_ED 表示来 自于 CH1(双边沿信号),即上升沿或者 下降沿都是有效的。TI1FP1 表示来自 CH1 并经过边沿检测器后的信号,可以是上升沿或者下 降沿。TI2FP2 表示来自 CH2 并经过边沿检测器后的信号,可以是上升沿或者下降沿

最后经过从模式选择器,由 ECE 位和 SMS[2:0]位来选择定时器的时钟源。

3)外部时钟模式 2:外部触发输入(ETR)

       时钟源进入定时器的流程如下:外部 时钟源信号→IO→TIMx_ETR。从 IO 到 TIMx_ETR,就需要我们配置 IO 的复用功能,才能使 IO 和定时器相连通。

定时器时钟信号首先从 ETR 引脚进来

接着经过外部触发极性选择器,由 ETP 位来设置上升沿有效还是下降沿有效,选择下降沿 有效的话,信号会经过反相器。

然后经过外部触发预分频器,由 ETPS[1:0]位来设置预分频系数,系数范围:1、2、4、8。

紧接着经过滤波器器,由 ETF[3:0]位来设置滤波方式,也可以设置不使用滤波器。fDTS 由 TIMx_CR1 寄存器的 CKD 位设置。

最后经过从模式选择器,由 ECE 位和 SMS[2:0]位来选择定时器的时钟源。

4)内部触发输入(ITRx):使用一个定时器作为另一定时器的预分频器

TIM1 作为 TIM2 的预分频器,需要完成的配置步骤如下:

1,TIM1_CR2 寄存器的 MMS[2:0]位设置为 010,即 TIM1 的主模式选择为更新(选择更新事件作为触发输出 (TRGO))。

2,TIM2_SMCR 寄存器的 TS[2:0]位设置为 000,即使用 ITR1 作为内部触发。

3,TIM2_SMCR 寄存器的 SMS[2:0]位设置为 111,即从模式控制器选择外部时钟模式 1。

4,TIM1 和 TIM2 的 CEN 位都要置 1,即启动计数器。

② 控制器

控制器包括:从模式控制器、编码器接口和触发控制器(TRGO)。从模式控制器可以控制计数器复位、启动、递增/递减、计数。编码器接口针对编码器计数。触发控制器用来提供触发信号给别的外设,比如为其它定时器提供时钟或者为 DAC/ADC 的触发转换提供信号。

③ 时基单元

时基单元包括:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器 (TIMx_ARR)。

通用定时器的计数模式有三种:递增计数模式、递减计数模式和中心对齐模式;

④ 输入捕获

        图中的第④部分是输入捕获,一般应用是要和第⑤部分一起完成测量功能。 TIMx_CH1~ TIMx_CH4 表示定时器的 4 个通道,这 4 个通道都是可以独立工作的。IO 端口通过复用功能与这些通道相连。配置好 IO 端口的复用功能后,将需要测量的信号输入到相应的 IO 端口,输入捕获部分可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常见的测量 有:测量输入信号的脉冲宽度、测量 PWM 输入信号的频率和占空比等。

TI1 首先经过一个滤波器,由 ICF[3:0]位来设置滤波方式,也可以设置不使用滤波器。

接着经过边沿检测器,由 CC1P 位来设置检测的边沿,可以上升沿或者下降沿检测。

然后经过输入捕获映射选择器,由 CC1S[1:0]位来选择把 IC1 映射到 TI1、TI2 还是 TRC。

紧接着经过输入捕获 1 预分频器,由 ICPS[1:0]位来设置预分频系数,范围:1、2、4、8。

最后需要把 CC1E 位置 1,使能输入捕获,IC1PS 就是分频后的捕获信号。

⑤ 输入捕获和输出比较公用部分

       首先看到捕获/比较预装载寄存器,我们以通道 1 为例,那么它就是 CCR1 寄存器,通道 2、 通道 3、通道 4 就分别对应 CCR2、CCR3、CCR4。在图中就可以看到 CCR1~4 是有影子 寄存器的,该寄存器不可直接访问。

⑥ 输出比较

上图中,可以看到输出模式控制器,由 OC1M[2:0]位配置输出比较模式

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值