TIM(Timer)定时器
- 定时器可以对输入的时钟进行计数,并在计数器达到设定时触发中断。
- 对基准时钟技术的过程,实际上就是计时的过程。
- 可以将定时器当做一个计数器
在STM32中,定时器的基准时钟一般是主频72MHz,对72MHz计72个数,1MHz就是1us的时间,计72000个数,1KHz就是1ms的时间。
解释为什么72个72MHz就是1MHz。
72MHz = 1/72000,000 * 72 =1/1000,000 s = 1MHz = 1us
- 16位计数器(计数定时器),预分频器(对计数器时钟进行分频,让计数更加 灵活),自动重装寄存器(计数目标值,计多少个时钟申请中断)的时基东单元,在72MHZ计数器时钟下可以实现最大59.65s 的定时。
最大定时为56.65s
最大定时=(预分频系数*最大自动重装树)/ 72M
GPT的知识
STM32的定时器最大定时时间的计算取决于几个关键参数:定时器的时钟频率(Timer Clock Frequency)、预分频系数(Prescaler)、以及自动重装载寄存器(Auto-Reload Register, ARR)的值。
假设我们使用的是一个 16 位的定时器。让我们逐步计算最大定时时间:
-
定时器时钟频率:这通常是系统时钟频率(SYSCLK)或系统时钟的一部分。假设定时器时钟频率是 72 MHz(这是一个常见的值,但具体取决于你的STM32型号和配置)。
-
预分频系数:预分频器(Prescaler)可以将时钟频率降低。预分频器的值可以从 0 到 65535(16 位),但实际预分频系数是
Prescaler + 1
。最大预分频系数是 65536。 -
自动重装载寄存器(ARR):ARR的值决定了定时器的计数范围。对于 16 位定时器,ARR的最大值是 65535。
这就是为什么你看到最大定时时间约为 59.65 秒。这是因为我们假设了72 MHz的定时器时钟频率,并且使用了最大预分频器值和最大ARR值。
如果你有不同的定时器时钟频率或预分频系数,最大定时时间也会相应变化。
6. 不仅具备基本的定时中断功能,而且包含外时钟源选择、输入捕获(测量方波频率
7. ),输出比较(PWM),编码器接口,主从触发模式等多 种功能。
8. 根据复杂度和应用场景分为高级定时器,通用定时器,基本定时器三种类型
STM32F103C8T6 定时器资源 : TIM1 , TIM2, TIM3, TIM4
只支持 向上计数器
支持 向上。向下计数功能
GPT 描述
STM32的通用定时器(General-purpose Timer, TIM)框图展示了定时器的主要组成部分及其功能模块。以下是对该框图的简要描述:
-
时钟输入与预分频器:
- 来自RCC的TIMxCLK:定时器时钟输入,通常来自系统时钟。
- ETR(外部触发输入):可以选择作为定时器时钟的外部信号源,通过边沿检测和预分频器处理。
- PSC(预分频器):对输入时钟进行分频,从而降低时钟频率,以适应不同的定时要求。
-
计数器和自动重装载寄存器:
- CNT(计数器):核心的计数单元,可以进行加/减计数。
- ARR(自动重装载寄存器):当计数器达到ARR值时,会重新加载计数器,实现周期性计数。
-
输入捕获和输出比较:
- IC1, IC2, IC3, IC4(输入捕获单元):捕获输入信号的时间,用于测量脉冲宽度、频率等。
- OC1, OC2, OC3, OC4(输出比较单元):生成PWM信号或其他波形,用于输出控制。
-
模式控制和触发器:
- TRGI, TRGO(触发输入/输出):用于与其他定时器或外部设备同步。
- SLAVE模式控制器:支持从模式,实现与主定时器同步工作。
-
编码器接口:
- TI1FP1, TI2FP1:用于连接编码器,进行位置或速度测量。
-
中断和事件:
- TIF, UIF:产生中断或事件信号,用于响应定时器溢出、捕获事件等。
-
输出控制:
- OC1REF, OC2REF, OC3REF, OC4REF:输出比较的参考信号。
- 输出控制逻辑:控制实际的定时器输出信号(TIMx_CHx)。
框图展示了定时器的整体架构,定时器通过多种输入源和预分频器获取时钟信号,计数器和自动重装载寄存器实现周期性计数,通过输入捕获和输出比较模块进行信号的捕获和生成,同时可以与其他外部设备进行同步和通信。
预分频时序
计数器时序