STM32-F407入门学习专题(八) STM32外设之高级控制定时器

目录

1 高级控制定时器介绍

2 高级控制寄存器功能框图

 2.1 时钟源

2.1.1 内部时钟源CK_INT

2.1.2 外部时钟模式1

2.1.3外部时钟模式1—实例之向上计数器在TI2输入端的上升沿计数配置

2.1.4 外部时钟模式2

2.1.5 外部时钟模式2—实例之在ETR下每2个上升沿计数一次的向上计数器配置

2.1.6 内部触发输入

 2.2 控制器

2.3 时基单元器

2.3.1 计数器寄存器TIMx_CNT

2.3.2 预分频器寄存器TIMx_PSC

2.3.3   自动重载寄存器TIMx_ARR

 2.3.4 重复次数寄存器TIMx_RCR

2.4 输入捕获

2.5 PWM输入模式



1 高级控制定时器介绍

高级控制定时器(TIM1和TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,可以实现输入捕获和输出比较功能,相比于通用定时器,高级定时器增加了可编程死区互补输出、重复计数器、刹车功能

高级控制定时器包含一个16位向上、向下、向上/向下自动重载计数器,一个16位计数器、一个16位可编程预分频器(预分频器的时钟源可选择内部时钟or外部时钟)、以及一个8位重复计数器

定时器的多种高级功能是需要外部引脚配合使用的,比如输入捕获(脉冲计数、上升沿或下降沿时间检测、PWM输入检测)、输出比较(脉冲输出、步进电机控制)、PWM脉冲宽度调节等

GPIO作为定时器功能就是IO的复用,在程序中要设置为复用模式,一个定时器功能引脚可以对应不同的IO

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第1张图片

2 高级控制寄存器功能框图

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第2张图片

 2.1 时钟源

高级控制定时器有4个时钟源:

1、内部时钟源CK_INT

2、外部时钟模式1:外部通道输入引脚TINx(x取1、2)

3、外部时钟模式2:外部触发ETR

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

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第3张图片

2.1.1 内部时钟源CK_INT

 从模式控制寄存器TIMx_SMCR的SMS = 000

内部时钟CK_INT来自于STM32芯片内部的APB总线,对TIM1和TIM8来说是168MHz

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第4张图片

2.1.2 外部时钟模式1

  从模式控制寄存器TIMx_SMCR的SMS = 111

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第5张图片

框1:时钟信号输入引脚

使用外部时钟模式1时,有2个来自定时器输入通道的时钟信号,分别是TI1FP1和TI2FP2, TI1FP1对应IC1(TIMx_CH1),TI2FP2对应IC2(TIMx_CH2),通过配置TIMx_CCMR1的位CCxS[1:0]来选择哪一路信号,TI3和TI4不能作为外部时钟模式1的引脚

框2:滤波器

滤除输入信号上的高频干扰,可以通过滤波器配置不同的滤波时间

框3:边沿检测

检测上升沿有效还是下降沿有效,可以TIMx_CCER的位CCxP和CCxNP配置

00:非反相/上升沿触发、01:反相/下降沿触发

10:保留,不使用此配置、11:未反相/边沿触发

框4:触发选择

若选择外部时钟模式1,则有两个触发源,一个是滤波后的定时器输入1(TI1FP1)和滤波后的定时器输入2(TI2FP2),可有TIMx_SMCR的位TS[2:0]配置

框5:从模式选择

选定了触发源信号后,信号是接到TRGI引脚的,让触发信号成为外部时钟模式1的输入,即为CK_PSC

2.1.3外部时钟模式1—实例之向上计数器在TI2输入端的上升沿计数配置

1、配置TIMx_CCMR1寄存器CC2S = 01,通道2配置为输入,IC2映射在TI2上

2、配置TIMx_CCMR1寄存器IC2F[3:0],选择滤波器带宽(IC2F = 0000时即不需要滤波器)

3、配置TIMx_CCER寄存器CC2P = 0和CC2NP = 0,选定上升沿极性

4、配置TIMx_SMCR寄存器SMS = 111,选择定时器外部时钟模式1

5、配置TIMx_SMCR寄存器TS = 110,选定TI2作为触发输入源

6、设置TIMx_CR1寄存器CEN = 1,启动计数器

2.1.4 外部时钟模式2

TIMx_SMCR寄存器的ECE = 1

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第6张图片

 框1:时钟信号输入引脚

使用外部时钟模式2时,时钟信号来自于定时器特定输入通道TIM_ETR

框2:外部触发极性

TIMx_SMCR寄存器中的ETP位控制触发极性

0:ETR未反相,高电平或上升沿有效; 1:ETR反相,低电平或下降沿有效

框3:分频器

当触发信号的频率很高时,就必须使用分频器进行降频,有1/2/4/8可选,由TIMx_SMCR寄存器中的ETPS[1:0]配置,保证输出信号ETRP频率小于TIMx_CLK频率的1/4

框4:滤波器

若ETRP信号的频率过高或者混杂有高频干扰信号,就需要使用滤波器对ETRP信号重新采样,达到降频或者去除干扰的目的,由TIMx_SMCR的位ETF[3:0]配置,其中f_{DTS}是由内部时钟CK_INT分频得到,由TIMx_CR1的位CKD[1:0]配置

框5:从模式选择

经过滤波后的信号连接至ETRF引脚,CK_PSC输出,驱动计数器,TIMx_SMCR位ECE置1即可配置为外部时钟模式2

2.1.5 外部时钟模式2—实例之在ETR下每2个上升沿计数一次的向上计数器配置

1、不使用滤波器,置TIMx_SMCR寄存器ETF[3:0] = 0000

2、设置预分频器,置TIMx_SMCR寄存器ETPS[1:0] = 01,2分频

3、选择ETR的上升沿检测,置TIMx_SMCR寄存器的ETP = 0

4、开启外部时钟模式2,置TIMx_SMCR寄存器ECE = 1

5、启动计数器,写TIMx_CR1寄存器CEN = 1

2.1.6 内部触发输入

TIMx定时器从内部连接在一起,以实现定时器同步或级联,当某个定时器配置为主模式时,可对另一个配置为从模式的定时器的计数器执行复位、启动、停止操作或为其提供时钟

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第7张图片

 2.2 控制器

触发控制器用来针对片内外设输出触发信号,为其它定时器提供时钟和触发ADC/DAC转换

编码器接口专门针对编码器计数而设计

从模式控制器可以控制计数器复位、启动、递增/递减、计数

 STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第8张图片

2.3 时基单元器

 高级控制定时器的主要模块是一个16位计数器及其相关的自动重载寄存器,计数器可递增计数、递减计数或交替进行递增和递减计数,计数器的时钟可通过预分频器进行分频

计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写,即使在计数器运行时也可执行读写操作

时基单元包括:

计数器寄存器(TIMx_CNT)

预分频器寄存器(TIMx_PSC)

自动重载寄存器(TIMx_ARR)

重复次数寄存器(TIMx_RCR)

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第9张图片

2.3.1 计数器寄存器TIMx_CNT

计数器最大值不一定是65535,可以通过寄存器值进行设定

三种计数模式:

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第10张图片一、递增(向上计数):0、1、2、……65534、65535、0、1、2……

向上计数模式:计数器从0开始计数到自动重装载值(TIMx_ARR计数器值),然后重新从0开始并产生一个计数器溢出事件,若使用重复计数器,则当递增计数的重复次数达到重复计数器寄存器中的次数+1(即TIMx_RCR+1)后,将生成更新事件(UEV);若不使用重复计数器,将在每次计数器上溢时产生更新事件

TIMx_EGR寄存器的UG(更新事件生成)位置1时,也将产生更新事件

通过软件将TIMx_CR1寄存器中的UDIS位置1可禁止UEV(更新)事件,这可避免向预装载寄存器写入新值时更新影子寄存器,在UDIS位写入0之前不会产生任何更新事件,不过,计数器和预分频计数器都会重新从0开始计数

若TIMx_CR1寄存器中的URS位 (更新请求选择)已置1,则将UG位置1会生成更新事件UEV但不会将UIF标志置1(因此,不会发送任何中断或DMA请求),这样一来,如果在发生捕获事件将计数器清零,将不会同时产生更新中断和捕获中断

发生更新事件时,将更新所有寄存器且将更新标志(TIMx_SR寄存器中的UIF位)置1(取决于URS位),此时:

1、重复计数器中将重新装载TIMx_RCR寄存器的内容

2、自动重载影子寄存器将以预装载值TIMx_ARR进行更新

3、预分频器的缓冲区将重新装载预装载值TIMx_PSC

 STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第11张图片

 二、递减(向下计数):65535、65534、……2、1、0.、65535、65534、……

向下计数模式:计数器从自动预装载值(TIMx_ARR计数器内容)开始递减计数直到0,然后重新从自动重装载值开始递减并生成计数器下溢事件,如此循环,若使用重复计数器,则当递减计数的重复次数达到重复计数器寄存器中次数+1(TIMx_RCR+1)后将生成更新事件(UEV),若不使用重复计数器,将在每次计数器下溢时产生更新事件

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第12张图片

三、递增/递减(中心对齐):0、1、2、……65534、65535、65534、……2、1、0、1、2、……

中心对齐计数模式:在中心对齐模式下,计数器从0开始计数到自动重载值(TIMx_ARR寄存器内容)-1,生成计数器上溢事件,然后从自动重载值开始向下计数到1并生成下溢事件,之后从0开始重新计数,如此循环

当TIMx_CR1寄存器中CMS位不为“00”时,中心对齐模式有效,将通道配置为输出模式时,其输出比较中断标志将在以下模式下置1,即:计数器递减计数(中心对齐模式1,CMS = “01”,计数器递增模式(中心对齐模式2,CMS = “10”)以及计数器递增/递减计数(中心对齐模式3,CMS = “11”))

每次发生计数器上溢和下溢时都会生成更新事件,或将TIMx_EGR寄存器中的UG位置1也可生成更新事件,更新事件时,计数器以及预分频器计数器将重新从0开始计数

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第13张图片

2.3.2 预分频器寄存器TIMx_PSC

预分频器TIMx_PSC有一个输入时钟CK_PSC和一个输出时钟CK_CNT,输入时钟来源于控制器部分

CK_CNT = CK_PSC/(PSC[15:0]+1)

由于TIMx_PSC控制寄存器具有缓冲(影子寄存器),可以在运行过程中改变其数值,新的预分频值将在下一个更新事件时起作用

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第14张图片

2.3.3   自动重载寄存器TIMx_ARR

自动重载寄存器是预先装载的,当写或读自动重装载寄存器将访问预装载寄存器,控制器TIMx-CR1寄存器中的自动重装载预装载使能位(ARPE)若置1,预装载寄存器的内容将在每次更新事件时传递给影子寄存器;若置0,修改TIMx_ARR的值后立即生效

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第15张图片

 2.3.4 重复次数寄存器TIMx_RCR

只有当重复计数器达到0时才会生成更新事件,意味着每当发生N+1个计数器上溢或下溢(N是TIMx_RCR重复计数器寄存器的值),数据就将从预装载寄存器转移到影子寄存器中

重复计数器在以下情况下递减:

1、递增计数模式下的每个计数器上溢

2、递减计数模式下的每个计数器下溢

3、中心对齐模式下每个计数器上溢和计数器下溢

当更新事件由软件(TIMx_EGR寄存器的UG位置1)或硬件(通过从模式控制器)生成时,无论重复计数器的值为多少,更新事件都将立即发生,并且在重复计数器中重新装载TIMx_RCR寄存器的值

2.4 输入捕获

输入阶段对相应的TIx(通道x)输入进行采样,生成一个滤波后的信号TIxF,接着,带有极性选择功能的边沿检测器生成一个信号(TIxFPx),该信号可用作从模式控制器的触发输入,也可用作捕获命令,该信号先进行预分频(ICxPS),而后再进入捕获寄存器

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第16张图片

输入捕获模式下,TIMx_CHx = TIx,如TIM1_CH1 = TI1

比较输出模式下,TIMx_CHx = OCx,如TIM1_CH1 = OC1

捕获/比较通道1主电路如下所示

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第17张图片

捕获/比较模块由一个预装载寄存器和一个影子寄存器组成,始终可通过读写操作访问预装载寄存器,在捕获模式下,捕获实际发生在影子寄存器中,然后将影子寄存器的内容复制到预装载寄存器中

在输入捕获模式下,当相应的ICx(定时器通道引脚)信号检测到跳变沿后,将使用捕获/比较寄存器(TIMx_CCRx)来锁存计数器的值,发生捕获事件时,会将相应的CCxIF标志(TIMx_SR寄存器)置1,并可发送中断或DMA请求

若发生捕获事件时CCxIF标志已处于高位,则会将重复捕获标志CCxOF(TIMx_SR寄存器)置1,可通过软件向CCxIF写入0来给CCxIF清零,或读取存储在TIMx_CCRx寄存器中的已捕获数据,向CCxOF写入“0”后会将其清零

2.5 PWM输入模式

 PWM:脉冲宽度调制,也即占空比可变的脉冲波形

STM32-F407入门学习专题(八) STM32外设之高级控制定时器_第18张图片

如上图是一个周期10ms,即频率100Hz的波形,在每个周期内,高低电平脉冲宽度各不相同,占空比是指高电平时间占整个周期的比例,如第一部分波形的占空比是40%,第二部分波形占空比是60%,第三部分波形占空比是80%

PWM输入模式就是用定时器功能测量PWM波的周期和占空比,PWM输入模式是定时器输入捕获模式的一种特例

你可能感兴趣的:(stm32,单片机,学习)