超详细!新手必看!STM32-通用定时器简介与知识点概括


  

一、通用定时器的功能

在基本定时器功能的基础上新增功能:
通用定时器有4个独立通道,且每个通道都可以用于下面功能。
(1)输入捕获:测量输入信号的周期和占空比等。
(2)输出比较:产生输出特定的波形(根据自己需要设置)。
(3)输出PWM。
(4)单脉冲模式.
(5)级联。(一个定时器的溢出事件可以使能下一个定时器的计数器开始计数)
(6)可以触发DAC、ADC。
(7)支持编码器和霍尔传感器电路。

如果不知道基本定时器的功能请看:STM32基本定时器。这里就不再过多详细介绍。

以STM32F103系列为例,具体开发板请查看开发手册。

类别定时器总线位数计数方向预分频系数是否可以产生DMA捕获/比较通道互补输出
基本定时器TIM6 / TIM7APB116位向上1~65536可以0
通用定时器TIM2 /TIM3 /TIM4/ TIM5APB116位向上/向下/中央对齐1~65536可以4
高级定时器TIM1 /TIM8APB216位向上/向下/中央对齐1~65536可以4

二、通用定时器的框图

在这里插入图片描述

三、通用定时器知识点汇总

在配置通用定时器前,需要了解一些关于通用定时器的知识点。

1. 时钟源选择

基本定时器的时钟源来自于内部时钟。而通用定时器的时钟源有四类:
● 内部时钟(CK_INT) :总线APB提供的时钟。(一般选择这个时钟)

在这里插入图片描述

● 外部时钟模式1:外部输入脚(TIx) ,来自定时器通道1或者通道2引脚的信号。

在这里插入图片描述
在这里插入图片描述
   TI1F_ED 表示来自于 CH1,并且没有经过边沿检测器过滤的信号,所以它是 CH1 的双边沿信号,即上升沿或者下降沿都是有效的。TI1FP1 表示来自 CH1 并经过边沿检测器后的信号,可以是上升沿或者下降沿。TI2FP2 表示来自 CH2 并经过边沿检测器后的信号,可以是上升沿或者下降沿。

● 外部时钟模式2:外部触发输入(ETR) 。
在这里插入图片描述
在这里插入图片描述
   定时器时钟信号首先从 ETR 引脚进来。接着经过外部触发极性选择器,由 ETP 位来设置上升沿有效还是下降沿有效,选择下降沿有效的话,信号会经过反相器。然后经过外部触发预分频器,由 ETPS[1:0]位来设置预分频系数,系数范围:1、2、4、8。紧接着经过滤波器器,由 ETF[3:0]位来设置滤波方式,也可以设置不使用滤波器。fDTS 由TIMx_CR1 寄存器的 CKD 位设置。

● 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。
在这里插入图片描述
在这里插入图片描述
   内部触发输入是使用一个定时器作为另一个定时器的预分频器,即实现定时器的级联。上图中表示的是TIM1作为TIM2的预分频器。

设置需要完成以下配置:
(1) TIM1_CR2 寄存器的 MMS[2:0]位设置为 010,即 TIM1 的主模式选择为更新(选择更新事件作为触发输出 (TRGO))。
(2) TIM2_SMCR 寄存器的 TS[2:0]位设置为 000,即使用 ITR1 作为内部触发。TS[2:0]位用于配置触发选择,除了 ITR1,还有其他的选择。
(3) TIM2_SMCR 寄存器的 SMS[2:0]位设置为 111,即从模式控制器选择外部时钟模式 1。
(4) TIM1 和 TIM2 的 CEN 位都要置 1,即启动计数器。

在这里插入图片描述

计数器时钟源寄存器设置方法:

计数器时钟选择类型设置方法
内部时钟(CK_INT)设置TIMx_SMCR的SMS=000
外部时钟模式1设置TIMx_SMCR的SMS=111
外部时钟模式2设置TIMx_SMCR的ECE=1
内部触发输入(ITRx)参考STM32F10xxx参考手册_V10

2. 控制器

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

3. 时基单元

   时基单元包括:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。这部分内容和基本定时器基本一样的。

4.模式选择

如果使用输入捕获模式,框图中的第③部分和④是一起配置的。
如果使用输出比较模式。框图中的第④部分和⑤是一起配置的。
注意:如果设置输入捕获模式,就不能设置输出比较模式。只能设置其中一种模式。

5. 框图分析

<1> 设置输入捕获模式,即框图中的③④。
   TIM3_CH1(PA.6) ----> TI1(外部信号) -------> 输入滤波器]以及边沿检测器(检测上升沿还是下降沿) -----> IC1(滤波器输出信号) -------> 输入捕获预分频器IC1PSC[1:0] ----> 捕获/比较1寄存器CCR1。

   假设:我们需要捕获上升沿,则当滤波器和边沿检测器捕获到上升沿后,CNT计数器中的值会加1,同时捕获/比较寄存器中会锁存计数器的值。

   TI1FP1 是来自于通道TI1,经过输入滤波和边沿检测后送给捕获比较通道IC1;
   TI1FP2 是来自于通道TI1,经过输入滤波和边沿检测后送给捕获比较通道IC2;
   TI1FP1和TI1FP2这两个信号的特性是一模一样的,都是通道1的信号经过滤波和边沿检测之后产生的信号,只是TI1FP1是送给捕获比较通道IC1,TI1FP2是送给捕获比较通道IC2。其他定时器通道同理!

四、复用与映射

在这里插入图片描述
如:利用引脚来使用定时器功能时,需要进行复用与映射操作。
   我们利用引脚来使用芯片内一些外设的功能时,需要打开GPIO的复用功能。打开复用功能后,可以对应很多的外设模块,那么我们如何确定使用哪个外设模块呢?这时就需要用到映射功能。如将PA0映射到TIM5的CH1。这时就可以利用PA0来使用定时器功能了。

在这里插入图片描述

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 ,ENABLE );    //重映射--部分重映射
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 ,ENABLE );       //重映射--完全重映射
  • 22
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值