文章目录
一、STM32的定时器
STM32 F系列最多可以有8个定时器。
高级定时器(TIM1、TIM8);
通用定时器(TIM2、TIM3、TIM4、TIM5);
基本定时器(TIM6、TIM7)。
STM32通用定时器
主要功能
详细参考《STM32中文参考手册V》-第14章通用定时器。
●位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上);
● 16位向上、向下、向上/向下自动装载计数器(TIMx_CNT)
● 16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65536之间的任意
数值
● 4个独立通道(TIMx_CH1~4):
─ 输入捕获
─ 输出比较
─ PWM生成(边缘或中间对齐模式)
─ 单脉冲模式输出
● 使用外部信号(TIMx_ETR 对应tim2-tim4ERT的引脚)控制定时器和定时器互连的同步电路
● 如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
─ 输入捕获
─ 输出比较
● 支持针对定位的增量(正交)编码器和霍尔传感器电路
● 触发输入作为外部时钟或者按周期的电流管理
●使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。
STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。
二、定时器框图
将通用定时器分为四个部分:
1,选择时钟
2,时基电路
3,输入捕获
4,输出比较
三、定时器工作过程
时钟选择
● 内部时钟(CK_INT)
CK_INT---->CK_PSC---->CK_CNT
● 外部时钟模式1:外部输入脚(TIx) (只有CH1,CH2–通道1,2)
由所选触发信号(TRGI)信号上升沿提供计数器时钟
此触发信号的来源有八种
● 外部时钟模式2:外部触发输入(ETR) (来自TIMx 的复用引脚)
计数器可在外部触发输入 ETR 出现上升沿或下降沿时计数
● 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时
器Timer1而作为另一个定时器Timer2的预分频器。参见14.3.15。
四、时基电路(时基单元)*
● 自动重装载寄存器 (TIMx_ARR)
● 计数器寄存器(TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
自动重装载寄存器(TIMx_ARR)
作用:存放实际计数的值,CNT从0计数到ARR+1;
如果使能更新中断,在CNT的值超过ARR设置的值的时候,产生(溢出)更新中断。
计数器寄存器(TIMx_CNT)
- 作用:存放计数器的当前值。
- 计数器CNT的计数模式
●向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件(更新时间–可以触发更新中断)。
●向下计数模式:计数器从自动装入的值**(TIMx_ARR)开始向下计数到0**,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
●中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。(先向上产生再向下,循环往复,中间产生一处事件)
预分频寄存器 (TIMx_PSC)
CNT计数一次的时间
计数器频率CK_CNT=CK_PSC/(psc+1)
CNT计一次数的时间=1/CK_CNT=(psc+1)/ CK_PSC
CK_PSC为72MHZ
即=(psc+1)/72MHZ
通用定时器超时时间
Tout=(ARR+1)(PSC+1)/Tclk
其中:Tclk为(内部时钟源72MHZ)。
(psc+1)/Tclk为CNT计数一次的时间,乘以整个周期计数的次数(ARR+1),即可求出超时时间。
这里需要注意的是:PSC预分频系数需要加1,同时自动重加载值也需要加1。
五、影子寄存器
在配置输出比较(输出PWM)时需要使能相关的影子寄存器。
//--------------------------------------使能预装载通道寄存器
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
//--------------------------------------使能ARR预重装载通道寄存器
TIM_ARRPreloadConfig(TIM1,ENABLE);
含有影子寄存器的有:
- TIMx_PSC 分频寄存器
- TIMx_ARR 自动重装载寄存器----更新事件
- TIMx_CCR 捕捉比较寄存器----1~4对应输入捕获或输出比较的四条通道
-TIMx_RCR 重复计数寄存器
六、其他寄存器
控制寄存器(CR1~4)
作用:对计数器的计数方式、使能相关位等进行设置。
DMA / 中断使能寄存器(TIMx_DIER)
作用:对DMA / 中断使能进行配置。
包含:
更新中断
捕获/比较1~4中断
DMA请求
输入捕获/输出比较寄存器(TIMx_CCR1~4)
在运用到输入捕获或者输出比较时配置。
- 在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果产生相应动作。利用这点,我们通过修改这个寄存器的值,就可以控制 PWM的输出脉宽了。
其对应OC的四条通道。
假设定时器工作模式设置为向上计数 PWM模式,且当 CNT<CCRx 时,输出 1,当 CNT>=CCRx 时输出 0,则:
当 CNT 值小于 CCRx 的时候, IO 输出高电平 (1)
当 CNT 值大于等于 CCRx 的时候,IO 输出低电平 (0)
当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。
因此,改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的周期(频率),这就是利用定时器输出PWM 的基本原理。
- 在输入模式下,捕获事件发生后将CNT的数值传入CRR。
其对应IC的四条通道。