目录
1-内部时钟源CK_INT2-外部时钟模式1—外部的GPIO Tix( x=1 2 3 4)3-外部时钟模式2—外部的GPIO ETR4-内部触发输入—ITRx( x=1 2 3 4)
各个定时器特性
高级定时器功能简介
定时器功能: 定时、输出比较、输入捕获、断路输入
1-计数器16bit,上/下/两边 计数, TIM1和TIM8,还有一个重复计数器RCR,独有。
2-有4个GPIO,其中通道1~3还有互补输出GPIO
3-时钟来自PCLK2,可实现1~65536分频
1、高级定时器的框图
1、时钟源
1-内部时钟源CK_INT
2-外部时钟模式1—外部的GPIO Tix( x=1 2 3 4)
3-外部时钟模式2—外部的GPIO ETR
4-内部触发输入—ITRx( x=1 2 3 4)
1.1内部时钟源
1-内部时钟源来自RCC的TIMx_CLK
2-TIMx_CLK等于多少呢?如何确定?
具体的查看: RCC 专用时钟配置寄存器 (RCC_DCKCFGR)
1.2外部时钟1(有点像编码器模式)
时钟信号输入引脚
1-外部的GPIO TIx,对应: TIMx_CH1/2/3/4
2-TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1控制 TI1/2, CCMR2 控制 TI3/4
滤波器
1-如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的,
2-由TIMx_CCMx 的位 ICxF[3:0]配置
边沿检测
1-边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。
2-由 TIMx_CCER 的位 CCxP 和 CCxNP 配置
触发选择
1-当使用外部时钟模式 1 时,触发源有两个,一个滤波后的定时器输入 1( TI1FP1)和滤波后的定时器输入 2( TI2FP2)。
2-由 TIMx_SMCR 的位 TS[2:0]配置
从模式选择
1-选定了触发源信号后,最后我们需把信号连接到TRGI 引脚,让触发信号成为外部时钟模式 1 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。
2-具体的配置TIMx_SMCR 的位 SMS[2:0]为 000 即可选择外部时钟模式 1。
使能计数器
1-经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 1 的配置就算完成。
2-使能计数器由 TIMx_CR1 的位 CEN 配置
1.3 外部时钟2
时钟信号输入引脚
当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR,只有 1 个
外部触发极性
1-来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效。
2-具体的由 TIMx_SMCR的位 ETP 配置
外部触发预分频器
由于 ETRP 的信号的频率不能超过 TIMx_CLK( 180M)的 1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频。
2-具体的由 TIMx_SMCR 的位 ETPS[1:0]配置
滤波器
1-如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的,需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的。
2-具体的由 TIMx_SMCR 的位 ETF[3:0]配置,其中的fDTS 是由内部时钟 CK_INT 分频得到,具体的由TIMx_CR1 的位CKD[1:0]
从模式选择
1-经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。
2-具体的配置 TIMx_SMCR 的位 ECE 为 1即可选择外部时钟模式 2
使能计数器
1-经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 2 的配置就算完成。
2-使能计数器由 TIMx_CR1 的位 CEN 配置
1.4内部触发输入
1-内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。
2- 由TIMx_SMCR 的位 TS[2:0]配置
内部触发连接
2、控制器
1-控制器就是用来控制的,发送命令的
2-CR1、 CR2、 SMCR、 CCER,主要学习这几个寄存器即可。
3、时基单元
时基单元的组成
1-16位的预分频器 PSC, TIMx_PSC
2-16位的计数器CNT, TIMx_CNT
3-8位的重复计数器RCR, TIMx_RCR(高级定时器独有)
3-16位的自动重装载寄存器ARR, TIMx_ARR
预分频器
4、输入铺获
①输入通道
当使用需要被测量的信号从定时器的外部引脚TIMx_CH1/2/3/4 进入,通常叫 TI1/2/3/4,在后面
的捕获讲解中对于要被测量的信号我们都以 TIx 为标准叫法
②输入滤波和边沿检测
③捕获通道
预分频器
⑤捕获寄存器
五、输出比较
3、输入捕获的应用
1、测量脉宽和频率
2、 PWM输入模式
2、 PWM输入模式
五、输出比较
![](https://i-blog.csdnimg.cn/blog_migrate/88c4b9911fb69c2cbc80532f36f708bb.png)
输出比较的作用
①输出比较寄存器
②死区发生器
③输出控制—讲解
④输出引脚
输出比较的应用
1-输出比较模式总共有 8 种,常用的是PWM模式。
2-由寄存器 CCMRx 的位 OCxM[2:0]配置
PWM输出模式
PWM 输出就是对外输出脉宽(即占空比)可调的方
波信号,信号频率由自动重装寄存器 ARR 的值决定,
占空比由比较寄存器 CCR 的值决定
边沿对齐 VS 中心对齐
1-根据CNT的计数方向, PWM波形分成边沿对齐和中
心对齐两种。边沿对齐主要用于直流电机,中心对齐
主要用于交流电机。
2-边沿对齐时, CNT只工作在递增或者递减。
3-中心对齐时, CNT工作在递增和递减
固件库结构体介绍
1-时基初始化结构体: TIM_TimeBaseInitTypeDef
![](https://i-blog.csdnimg.cn/blog_migrate/b262ad6e392a05c13131558cac32aa4e.png)
1-TIM_Prescaler: 定时器预分频器设置,时钟源经该预分频器才是定时器计数时钟CK_CNT,它设定PSC 寄存器的值。计算公式为: 计数器时钟频率(fCK_CNT) 等于fCK_PSC / (PSC[15:0] + 1),可实现1 至 65536 分
2-TIM_CounterMode: 定时器计数方式,可设置
为向上计数、向下计数以及中心对齐。高级控制定时
器允许选择任意一种。
-TIM_Period: 定时器周期,实际就是设定自动重
载寄存器 ARR 的值, ARR 为要装载到实际自动重载
寄存器(即影子寄存器) 的值, 可设置范围为 0 至
65535
4-TIM_ClockDivision: 时钟分频,设置定时器时钟
CK_INT 频率与死区发生器以及数字滤波器采样时钟
频率分频比。可以选择 1、 2、 4 分频。 只有在使用
外部时钟2和输入捕获的时候用得到
5-TIM_RepetitionCounter: 重复计数器,只有 8
位,只存在于高级定时器
2-输出比较结构体: TIM_OCInitTypeDef
1-TIM_OCMode: 比较输出模式选择,总共有八种,常用的为 PWM1/PWM2。它设定CCMRx 寄存器OCxM[2:0]位的值。
2-TIM_OutputState: 比较输出使能,决定最终的输出比较信号 OCx 是否通过外部引脚输出。它设定TIMx_CCER 寄存器 CCxE/CCxNE 位的值。
3-TIM_OutputNState:比较互补输出使能,决定OCx 的互补信号 OCxN 是否通过外部引脚输出。它设定 CCER 寄存器 CCxNE 位的值。
4-TIM_Pulse: 比较输出脉冲宽度,实际设定比较寄存器 CCR 的值,决定脉冲宽度。可设置范围为 0 至65535
5-TIM_OCPolarity: 比较输出极性,可选 OCx 为高电平有效或低电平有效。它决定着定时器通道有效电平。它设定 CCER 寄存器的 CCxP 位的
6-TIM_OCNPolarity: 比较互补输出极性,可选OCxN 为高电平有效或低电平有效。它设定
TIMx_CCER 寄存器的 CCxNP 位的值
7-TIM_OCIdleState: 空闲状态时通道输出电平设置,可
选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)时,经
过死区时间后定时器通道输出高电平或低电平。它设定CR2 寄
存器的 OISx 位的值。
8-TIM_OCNIdleState: 空闲状态时互补通道输出电平设
置,可选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)
时,经过死区时间后定时器互补通道输出高电平或低电平,设
定值必须与 TIM_OCIdleState 相反。它设定是 CR2 寄存器的
OISxN 位的值
3-输入捕获结构体: TIM_ICInitTypeDef
![](https://i-blog.csdnimg.cn/blog_migrate/ff944f82120f79f987f3bb42e7a7c662.png)
1-TIM_Channel: 捕获通道 ICx 选择,可选TIM_Channel_1、 TIM_Channel_2、TIM_Channel_3 或 TIM_Channel_4 四个通道。它设定 CCMRx 寄存器 CCxS 位 的值。
2-TIM_ICPolarity: 输入捕获边沿触发选择,可选上升沿触发、下降沿触发或边沿跳变触发。它设定CCER 寄存器 CCxP 位和 CCxNP 位的值。
3-TIM_ICSelection: 输入通道选择,捕获通道 ICx的信号可来自三个输入通道,分别为TIM_ICSelection_DirectTI、TIM_ICSelection_IndirectTI 或TIM_ICSelection_TRC它设定 CCRMx 寄存器的 CCxS[1:0]位的值。
4-TIM_ICPrescaler: 输入捕获通道预分频器,可设置 1、 2、 4、 8 分频,它设定 CCMRx寄存器的ICxPSC[1:0]位的值。如果需要捕获输入信号的每个有效边沿,则设置 1 分频即可。5-TIM_ICFilter: 输入捕获滤波器设置,可选设置0x0 至 0x0F。它设定 CCMRx 寄存器ICxF[3:0]位的值。一般我们不使用滤波器,即设置为 0