STM32——通用计时器

通用计时器框图

1.时钟源

1)内部时钟(CK_INT)

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

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

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

1.1.外部时钟模式 1(TI1、TI2)

外部时钟源进入定时器的流程以通道2为例:

1)外部时钟源信号→IO→TIMx_CH1(或者 TIMx_CH2),其中,外部时钟模式 1 下,时钟源信号只能从 CH1 或者 CH2 输入到定时器,CH3 和 CH4 都是不可以的。

2)TI2 首先经过一个滤波器,由 ICF3:0位来设置滤波方式,也可以设置不使用滤波器。

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

4)然后经过触发输入选择器,由 TS4:0位来选择 TRGI(触发输入信号)的来源。 TI1F_ED、TI1FP1 和 TI2FP2 三个触发输入信号(TRGI),

5)最后经过模式选择器,由 ECE 位和 SMS2:0位来选择定时器的时钟源。外部时钟模式 1,ECE 位置 0,SMS2:0 = 111。

6)CK_PSC 需要经过定时器的预分频器分频后,最终就能到达计数器进行计数了。

1.2.外部时钟模式 2(ETR)

1)外部时钟源信号→IO→TIMx_ETR,需配置 IO 的复用功能,才能使IO 和定时器相连通

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

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

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

5)从模式选择器,由 ECE 位置 0和 SMS2:0位来选择定时器的时钟源

6)CK_PSC 需要经过定时器的预分频器分频后,最终就能到达计数器进行计数了

1.3.内部触发输入(ITRx)

1)内部触发输入是使用一个定时器作为另一个定时器的预分频器,即实现定时器的级联。

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

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

2.TIM2_SMCR 寄存器的 TS2:0位设置为 000,即使用 ITR1 作为内部触发。TS2:0位用于配置触发选择,除了 ITR1,还有其他的选择,

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

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

注意:最常用的是内部时钟

2 控制器

控制器包括:从模式控制器、编码器接口和触发控制器(TRGO)。从模式控制器可以控制计数器复位、启动、递增/递减、计数。

3 时基单元

时基单元包括:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。通用定时器的计数模式有三种:递增计数模式、递减计数模式和中心对齐模式。

4 输入捕获

测量输入信号的脉冲宽度、测量 PWM 输入信号的频率和占空比,一般先要设置输入捕获的边沿检测极性,通过上下升沿的检测来达到目的。

1)待测量信号到达 TIMx_CH1 后,这个待测量信号用 TI1 表示,TI1 首先经过一个滤波器,由 ICF3:0位来设置滤波方式,也可以设置不使用滤波器。fDTS由 TIMx_CR1 寄存器的 CKD 位设置。

2)接着经过边沿检测器,由 CC1P 位来设置检测的边沿,可以上升沿或者下降沿检测。CC1NP是配置互补通道的边沿检测的,在高级定时器才有,通用定时器没有。

3)然后经过输入捕获映射选择器,由 CC1S1:0位来选择把 IC1 映射到 TI1、TI2 还是 TRC。这里我们的待测量信号从通道 1 进来,所以选择 IC1 映射到 TI1 上即可

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

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

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

当上升沿到来时,IC1PS 信号就会触发输入捕获事件发生,计数器的值就会被锁存到捕获/比较影子寄存器里。

6 输出比较

1)首先程序员写 CCR1 寄存器,即写入比较值。这个比较值需要转移到对应的捕获/比较影子寄存器后才会真正生效

2)比较值转移到影子寄存器的条件

CCR1 不在写入操作期间、

CC1S1:0 = 0 配置为输出、

OC1PE 位置0

3)当 CCR1 寄存器的值转移到其影子寄存器后,新的值就会和计数器的值进行比较

相关推荐
单片机杂货铺11 小时前
基于单片机的智能粮仓控制系统设计与实现
stm32·单片机·嵌入式硬件·物联网·计算机外设·51单片机·课程设计
指尖的爷11 小时前
RKNN转化环境搭建(rknn_toolkit2新版本)
嵌入式硬件·深度学习·物联网·目标检测
梁朝辉11 小时前
滴泪的曲线(Curved)还是直线(Line)什么区别,都应用于什么场景!
嵌入式硬件·硬件工程
clear sky .13 小时前
stm32H7进入HardFault_Handler机制
stm32·单片机·嵌入式硬件
小僧景贤14 小时前
STM32 GPIO 详解(含寄存器、HAL 库、电气特性、低功耗深度剖析)
stm32·单片机·嵌入式硬件
远翔调光芯片^1382879887216 小时前
从参数到应用:FP7208如何以0.2V精密反馈提升LED驱动性能
科技·单片机·嵌入式硬件·智能家居·能源
碧海银沙音频科技研究院16 小时前
4 BES2710编译环境搭建方法
嵌入式硬件·算法
别催小唐敲代码18 小时前
STM32 定时器学习笔记:TIM 架构、输入捕获与 PWM 一篇讲透
笔记·stm32·学习
csdn杰哥18 小时前
瑞萨单片机AI教程【六】导入外部电机状态数据训练模型
人工智能·单片机·嵌入式硬件·瑞萨·ra6m5
深念Y18 小时前
ZTE_UZ901_NVRAM经验总结
linux·服务器·网络·嵌入式硬件·嵌入式·随身wifi