打印
[信息]

【经验分享】STM32 通用定时器(TIM2到TIM5)

[复制链接]
1177|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
01. 通用定时器简介
通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。

它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。

使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。

这些定时器彼此完全独立,不共享任何资源。

02. TIM2到TIM5主要特性
通用 TIMx 定时器具有以下特性:
● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。
● 多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
● 发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
● 支持定位用增量(正交)编码器和霍尔传感器电路
● 外部时钟触发输入或逐周期电流管理

使用特权

评论回复
沙发
probedog|  楼主 | 2022-4-1 11:35 | 只看该作者
03. TIM2到TIM5功能说明
时基单元

可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。

计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。

时基单元包括:

● 计数器寄存器 (TIMx_CNT)

● 预分频器寄存器 (TIMx_PSC)

● 自动重载寄存器 (TIMx_ARR)

自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。

计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。

请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。

预分频器说明

预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控

制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。

图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:

预分频器分频由 1 变为 2 时的计数器时序图


使用特权

评论回复
板凳
probedog|  楼主 | 2022-4-1 11:38 | 只看该作者
预分频器分频由 1 变为 4 时的计数器时序图



计数器模式

递增计数模式


在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。

递减计数模式


在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器

下溢事件。

中心对齐模式(递增/ 递减计数)

在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始

向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。

使用特权

评论回复
地板
probedog|  楼主 | 2022-4-1 11:40 | 只看该作者
04. 时钟选择
计数器时钟可由下列时钟源提供:

● 内部时钟 (CK_INT)

● 外部时钟模式 1:外部输入引脚 (TIx)

● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。

● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。

05. 寄存器

5.1 TIMx 控制寄存器 1 (TIMx_CR1)

TIMx control register 1
偏移地址:0x00
复位值:0x0000



5.2 TIMx 控制寄存器 2 (TIMx_CR2)
TIMx control register 2
偏移地址:0x04
复位值:0x0000

[size=0.83em]
20200825202952731.png (14.81 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]3 天前 上传





5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)

TIMx slave mode control register
偏移地址:0x08
复位值:0x0000


使用特权

评论回复
5
probedog|  楼主 | 2022-4-1 11:45 | 只看该作者
5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER)
TIMx DMA/Interrupt enable register
偏移地址:0x0C
复位值:0x0000



5.5 TIMx 状态寄存器 (TIMx_SR)

TIMx status register
偏移地址:0x10
复位值:0x0000



5.6 TIMx 事件生成寄存器 (TIMx_EGR)
TIMx event generation register
偏移地址:0x14
复位值:0x0000



5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1)

TIMx capture/compare mode register 1
偏移地址:0x18
复位值:0x0000


5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)
TIMx capture/compare mode register 2
偏移地址:0x1C
复位值:0x0000


使用特权

评论回复
6
probedog|  楼主 | 2022-4-1 11:46 | 只看该作者
5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER)
TIMx capture/compare enable register
偏移地址:0x20
复位值:0x0000



5.10 TIMx 计数器 (TIMx_CNT)

TIMx counter
偏移地址:0x24
复位值:0x0000



5.11 TIMx 预分频器 (TIMx_PSC)

TIMx prescaler
偏移地址:0x28
复位值:0x0000



5.12 TIMx 自动重载寄存器 (TIMx_ARR)

TIMx auto-reload register
偏移地址:0x2C
复位值:0x0000

5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1)

TIMx capture/compare register 1
偏移地址:0x34
复位值:0x0000 000

5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2)
TIMx capture/compare register 2
偏移地址:0x38
复位值:0x0000 0000


使用特权

评论回复
7
probedog|  楼主 | 2022-4-1 11:50 | 只看该作者
5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3)
TIMx capture/compare register 3
偏移地址:0x3C
复位值:0x0000 0000



5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)
TIMx capture/compare register 4
偏移地址:0x40
复位值:0x0000 0000



5.17 TIMx DMA 控制寄存器 (TIMx_DCR)
TIMx DMA control register
偏移地址:0x48
复位值:0x0000



5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR)
TIMx DMA address for full transfer
偏移地址:0x4C
复位值:0x0000



5.19 TIM2 选项寄存器 (TIM2_OR)
TIM2 option register
偏移地址:0x50
复位值:0x0000


5.20 TIM5 选项寄存器 (TIM5_OR)
TIM5 option register
偏移地址:0x50
复位值:0x0000


使用特权

评论回复
8
carpsnow| | 2022-4-2 09:36 | 只看该作者
跟手册差不多

使用特权

评论回复
9
Jacquetry| | 2022-10-5 21:18 | 只看该作者
写的很清楚

使用特权

评论回复
10
Bblythe| | 2022-10-8 19:29 | 只看该作者

代码量小的时候用来做条件判断

使用特权

评论回复
11
alvpeg| | 2023-2-2 12:29 | 只看该作者
STM32 的定时器是个强大的模块,定时器使用的频率也是很高的  

使用特权

评论回复
12
uiint| | 2023-2-2 15:54 | 只看该作者
通用定时器是怎么跟管脚建立联系的?

使用特权

评论回复
13
wwppd| | 2023-2-4 19:37 | 只看该作者
STM32单片机内部 有几个定时器

使用特权

评论回复
14
vivilyly| | 2023-2-6 15:44 | 只看该作者
STM32中通用定时器配置和使用过程中通常或用到那几个寄存器?

使用特权

评论回复
15
jimmhu| | 2023-2-7 22:01 | 只看该作者
产生pwm时 模式1和模式2有什么区别  

使用特权

评论回复
16
pl202| | 2023-2-8 16:38 | 只看该作者
高级定时器,通用定时器,基本定时器之间都有什么区别

使用特权

评论回复
17
gygp| | 2023-2-16 11:06 | 只看该作者
stm32f407能发多少路脉冲?

使用特权

评论回复
18
周半梅| | 2023-7-1 08:26 | 只看该作者

要有一个延时的程序

使用特权

评论回复
19
Pulitzer| | 2023-7-1 09:29 | 只看该作者

内部由寄存器、控制器、运算器和时钟四部分组成,各部分之间通过电信号连通

使用特权

评论回复
20
周半梅| | 2023-7-1 10:32 | 只看该作者

时间片轮的设计思想

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

373

主题

1976

帖子

3

粉丝