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 首先经过一个滤波器,由 ICF[3:0]位来设置滤波方式,也可以设置不使用滤波器。

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

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

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

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

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

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

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

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

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

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

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

1.3.内部触发输入(ITRx)

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

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,即启动计数器。

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

2 控制器

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

3 时基单元

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

4 输入捕获

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

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

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

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

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

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

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

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

6 输出比较

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

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

CCR1 不在写入操作期间、

CC1S[1:0] = 0 配置为输出、

OC1PE 位置0

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

相关推荐
陌夏微秋16 分钟前
STM32单片机芯片与内部45 UART 不定长度接收 标志位结束 定时器超时 串口空闲中断
stm32·单片机·嵌入式硬件·信息与通信·智能硬件
挥剑决浮云 -1 小时前
STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器
c语言·经验分享·stm32·单片机·嵌入式硬件·学习
Whappy0012 小时前
第13部分 1.STM32之PWR电源控制-----4个实验
stm32·单片机·嵌入式硬件
冲,干,闯3 小时前
单片机里不想阻塞系统的延时
单片机·嵌入式硬件
小菜鸟学代码··4 小时前
STM32中断详解
stm32·单片机·嵌入式硬件
芒果de香蕉皮4 小时前
mavlink移植到单片机stm32f103c8t6,实现接收和发送数据
stm32·单片机·嵌入式硬件·算法·无人机
Yyq130208696824 小时前
MS41908M网络摄像机·监控摄像机用镜头驱动芯片(内置光圈控制
嵌入式硬件
DS小龙哥5 小时前
基于STM32单片机矿井矿工作业安全监测设计
stm32
musir16 小时前
stm32四联七段数码管,LED8*8点阵
stm32·单片机·嵌入式硬件
m0_748250036 小时前
【STM32】F103ZET6开发板----笔记01
笔记·stm32·嵌入式硬件