STM32高级定时器:
声明:本文将持续更新,目前刚刚把时钟源更完,敬请期待…
stm32的高级定时器功能强大,具有定时,输入捕获,输出比较,死区互补输出、重复计
数器、带刹车 (断路) 功能。本文将参考野火库开发指南来介绍一下高级定时器的基本配置以及输出比较,输入捕获,等功能。
一.高级定时器时钟源:
高级定时器可选四种时钟源:
- 内部时钟源CK_INT
- 外部时钟模式 1:外部输入引脚 TIx(x=1,2)
- 外部时钟模式 2:外部触发输入 ETR
- 内部触发输入 (ITRx)
内部触发输入不常用,所有下文不会讲它,下面来分别介绍一下剩下的三个时钟源:
内部时钟源CK_INT:
这个时钟源直接由定时器所在总线的时钟经过特定的分频规则来驱动,F1系列的所有定时器内部时钟源一般都为72MHz。
当从模式控制寄存器 TIMx_SMCR 的 SMS 位等于 000 时,则使用内部时钟。而寄存器的初始值都是0,所有如果要使用内部时钟,不需要配置任何寄存器和库函数
外部时钟模式 1:TIx(x=1,2)
每一个通用定时器和高级定时器都对应了四个GPIO引脚(TIMx_CH1,TIMx_CH2,TIMx_CH3,TIMx_CH4),它们可以完成输出比较,输入捕获等功能,也可以作为输入引脚,来输入外部时钟驱动高级定时器,这就是外部时钟模式1的功能,外部时钟模式1只能使用TIMx_CH1,TIMx_CH2两个引脚(又称TI1和TI2),具体是哪一个引脚需要查看手册,这里
具体使用哪一路信号,由 TIM_CCMRx 的位 CCxS[1:0] 配置
参考一下野火哥的图片:
以TI2为例(TIMx_CH2)
滤波器:滤波器的作用是过滤掉输入信号的高频干扰信号,可以由TIMx_CCMRx 的位 ICxF[3:0] 配置
边沿检测:边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效,具体由 TIMx_CCER 的位 CCxP 和 CCxNP 配置。
触发选择:边沿检测到的信号会生成触发源,当使用外部时钟模式 1 时,触发源有两个,TI1FP1和TI2FP2,如果输入引脚选择TI1,则这里只能选择TI1FP1,如果输入脚选择TI2,则这里只能选择TI2FP2
从模式选择:选定了触发源信号后,需把信号连接到 TRGI 引脚,让触发信号成为外部时钟模式 1 的输入,触发信号的频率经过 CK_PSC分频之后,称为时钟来驱动计数器 CNT 计数。具体的配置 TIMx_SMCR 的SMS[2:0]为 000 即可选择外部时钟模式 1。
总结一下配置步骤:
- 选择输入引脚:由 TIM_CCMRx 的位 CCxS[1:0] 配置
- 配置滤波器:由TIMx_CCMRx 的位 ICxF[3:0] 配置
- 选择边沿检测:由 TIMx_CCER 的位 CCxP 和 CCxNP 配置
- 触发选择:由 TIMxSMCR 的位 TS[2:0] 配置
- 从模式选择:配置 TIMx_SMCR 的SMS[2:0]为 000 即可选择外部时钟模式 1
- 计数器使能:使能计数器由 TIMx_CR1 的位 CEN 配置
外部时钟模式2:外部触发输入 ETR
通用定时器TIM2,TIM3,TIM3和高级定时器TIM1,TIM8各有一个ETR引脚专门用来作为外部时钟模式2使用,具体引脚对应关系请自行查阅手册
引脚选择:初始化引脚位输入模式(上拉,下拉或者浮空,根据实际需要来选择)
边沿检测:来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效,具体的由TIMx_SMCR 的位 ETP配置
外部触发预分频器:ETRP 的信号的频率不能超过 TIMx_CLK(72M)的 1/4,当触发信号频率很高的情况下,就必须使用分频器来降频,分频之后的信号称为ETRP,具体的由TIMx_SMCR 的位 ETPS[1:0] 配置
滤波器:如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的。具体的由 TIMx_SMCR 的位 ETF[3:0] 置,其中的 fDTS 是由内部时钟 CK_INT 分频得到,具体的由 TIMx_CR1 的位 CKD[1:0] 配置
从模式选择:经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入,最终经CK_PSC分频之后,生成时钟信号,然后驱动计数器 CNT 计数。具体的配置 TIMx_SMCR 的位 ECE 为 1 即可选择外时钟模式 2
使能计数器:使能计数器由 TIMx_CR1 的位 CEN 配置
在这里重点说明一下滤波器这一步骤:
滤波器采样时钟可以是内部时钟(72M),也可以是图示的fDTS时钟,fDTS时钟可以由TIMx_CR1寄存器的CKD[1:0]来决定
下面请看TIMx_SMCR 的位 ETF[3:0]:
简要介绍一下数字滤波器:数字滤波器有两个重要参数:采样频率和带宽,它是这样工作的,
以采样频率来对输入信号进行检测,比如说带宽是4,那么只有连续四次检测到高电平才会输出高电平,否则输入信号会被舍弃。从而达到过滤高电平的作用,这就是数字滤波器的基本工作机制
控制器:
学习控制寄存器需要读者熟练掌握TIMx_CR1,TIMx_CR2,TIMx_SMCR,TIMx_CCER这四个寄存器