通用定时器基本原理
参考资料
STM32Fx开发板:
《STM32Fx开发指南-HAL库版本》-定时器实验相关章节
STM32Fxxx官方资料:
《STM32Fxxx中文参考手册》-第x章 通用定时器
笔记基于正点原子官方视频
视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.1007.top_right_bar_window_history.content.click
如有侵权,联系删除
一、三种定时器的区别
1.STM32定时器
2.三种STM32定时器区别
二、通用定时器的特点
STM32的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5等)定时器功能特点包括:
- 16 /32 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。
- 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值。
- 4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
① 输入捕获
② 输出比较
③ PWM 生成(边缘或中间对齐模式)
④ 单脉冲模式输出 - 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
- 如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
① 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
② 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
③ 输入捕获
④ 输出比较
⑤ 支持针对定位的增量(正交)编码器和霍尔传感器电路
⑥ 触发输入作为外部时钟或者按周期的电流管理 - STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。
- 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。
三、通用定时器工作过程
1.计数器模式
通用定时器可以向上计数、向下计数、向上向下双向计数模式。
①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
2.通用定时器(TIM2,3,4,5)工作过程
参考资料:STM32F4xx中文参考手册.pdf
参考资料里有很详细的介绍
2.计数时钟的选择
- 计数器的时钟有8种选择:
- 内部RCC提供的时钟:TIMxCLK
- 内部触发输入口1~4:
- ITR1/ ITR2/ ITR3 / ITR4
- 用一个定时器作为另一定时器的分频器
- 外部捕捉比较引脚
- 引脚1:TI1FP1或TI1F_ED
- 引脚2:TI2FP2
- 外部引脚:ETR
- 使能/禁止位
- 可编程设定极性
- 4位外部触发过滤器
- 外部触发分频器:
- 分频器关闭
- 二分频
- 四分频
- 八分频
3.时基单元
- 计数器寄存器(TIMx_CNT)
- 向上计数、向下计数或者中心对齐向计数;
- 预分频器寄存器(TIMx_PSC)
- 可将时钟频率按1到65536之间的任意值进行分频,可在运行时改变其设置值;
- 自动装载寄存器(TIMx_ARR)
- 如果TIMl_CR1寄存器中的ARPE位为0,ARR寄存器的内容将直接写入影子寄存器;如果ARPE为1,ARR寄存器的内容将在每次的更新事件UEV发生时,传送到影子寄存器;
- 如果TIM1_CR1中的UDIS位为0,当计数器产生溢出条件时,产生更新事件:
4.更新事件
-
将预载寄存器的内容写入影子寄存器(通过自动重载位是否被使能来决定):
- 立即
- 在每次更新事件发生时
-
产生更新事件的条件:
- 当计数器上溢或下溢时,
- 当循环计数器计数值为0时(仅适用于TIM1),
- 通过软件设置UG(Update Generation)位。
-
更新事件的请求源可以从下面选择:
- URS = 1 —仅当计数器到达上溢/下溢时,将发出更新请求;
- URS = 0 —计数器的上溢/下溢、更新位的设置或从模式控制器产生的更新,将发出更新请求。
5.捕捉比较阵列介绍
- 捕捉比较阵列包括:
- 每个定时器拥有4个同样的捕捉比较通道;
- 可编程设定通道的方向:输入/输出
- 每个通道由以下部分组成:
- 捕捉/比较寄存器
- 针对捕捉的输入部分:
- 4位数字滤波器
- 输入捕捉分频器:
- 检测到每个边沿完成捕捉
- 每产生2个事件完成捕捉
- 每产生4个事件完成捕捉
- 每产生8个事件完成捕捉
- 针对比较的输出部分:
- 比较器
- 输出控制
- IC1、2和IC3、4可以分别通过软件设置将其映射到TI1、TI2和TI3、TI4;
- 4个16位捕捉比较寄存器可以编程用于存放检测到对应的每一次输入捕捉时计数器的值;
- 当产生一次捕捉,相应的CCxIF标志位被置1;同时如果中断或DMA请求使能,则产生中断或DMA请求。
- 如果当CCxIF标志位已经为1,当又产生一个捕捉,则捕捉溢出标志位CCxOF将被置1
6.PWM模式
- PWM模式运行产生:
- 定时器2、3和4可以产生4独立的信号
- 频率和占空比可以进行如下设定:
- 一个自动重载寄存器用于设定PWM的周期;
- 每个PWM通道有一个捕捉比较寄存器用于设定占空时间。
**例如:产生一个40KHz的PWM信号:在定时器2的时钟为72MHz下,占空比为50% ** - 预分频寄存器设置为0 (计数器的时钟为TIM1CLK/(O+1)),自动重载寄存器设为1799,CCRx寄存器设为899。
- 两种可设置PWM模式:
- 边沿对齐模式
- 中心对齐模式