新手必看!!STM32定时器简介

一、定时器有哪些?

新手必看!!STM32定时器简介_第1张图片
这篇文章我们主要讲基本定时器、通用定时器以及高级定时器。
每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。

二、定时器的工作原理

例如:基本定时器的计数器只能进行向上计数,计数器 根据频率进行向上计数,即每来一个 CNT脉冲,CNT 值就加 1。当 CNT值与ARR的设定值相等时计数器就会重新从 0 开始计数并生成计数器上溢事件(更新事件),如此重复以上过程。

三、每个定时器的功能以及使用场景

1. 基本定时器(Basic Timers):
功能: 基本定时器具有较为简单的功能,通常用于基本的计时和触发任务。
用途场景:定时、触发输出直接驱动DAC。

2. 通用定时器(General-Purpose Timers):
功能: 通用定时器提供了更多的功能和配置选项,包括PWM生成、脉冲计数、输入捕获、输出比较等功能。
用途场景: 适用于需要更复杂的定时功能的应用,如PWM控制、频率测量、脉冲计数等。测量输入信号的脉冲长度(输入捕获)或者 产生输出波形 ( 输出比较 和 PWM )等。

3. 高级定时器(Advanced Timers):
功能: 高级定时器除了通用定时器的功能外,还支持更高级的特性,如相位锁定回路(PLL)、编码器接口、三角波生成等。
用途场景: 适用于需要更高级、复杂计时功能的应用,例如音频处理、电机控制、编码器接口等。重复计数器、死区生成、互补输出、刹车输入等功能。

四、定时器功能详表

以STM32F103系列为例,具体开发板请查看开发手册。

类别 定时器 总线 位数 计数方向 预分频系数 是否可以产生DMA 捕获/比较通道 互补输出
基本定时器 TIM6 / TIM7 APB1 16位 向上 1~65536 可以 0
通用定时器 TIM2 /TIM3 /TIM4/ TIM5 APB1 16位 向上/向下/中央对齐 1~65536 可以 4
高级定时器 TIM1 /TIM8 APB2 16位 向上/向下/中央对齐 1~65536 可以 4

五、定时器知识点

1.影子寄存器(缓冲寄存器):

简介以及功能:手册中框图有些寄存器带有阴影效果,这就代表这个寄存器拥有类似预分频器那样的缓冲机制,即拥有影子寄存器。
在硬件结构上实际上是有两个寄存器。源寄存器是我们可以进行读写操作的,例如这里的TIMx_PSC 寄存器就是源寄存器,而影子寄存器我们是无法操作的,由内部硬件使用,并且影子寄存器的值才是实际产生效果的。因此我们可以对预分频器的值进行实时更改,但是并不会实时生效,其值只有在下一更新事件发生时才会传入影子寄存器,从而被实际使用。

新手必看!!STM32定时器简介_第2张图片

影子寄存器是真正起作用的寄存器,实际功能上的值都是参考的影子寄存器而不是原寄存器,比如预分频寄存器,这个分频数看的是预分频寄存器影子寄存器上的,而不是预分频寄存器上的。又比如重载值寄存器,那个重载值是看的影子寄存器上的值,而不是原寄存器上的值。影子寄存器主要有一个缓冲的作用。

2. 寄存器缓冲作用:
未设置缓冲:在原寄存器上用户设定的值->影子寄存器->work。
设置缓冲: 在原寄存器上用户设定的值->等待更新事件U发生->影子寄存器->work。

下面举个例子来更加通俗的理解缓冲作用!!
如:(1)未设置缓冲作用情况:
设置LED灯1s亮,1s灭。假如定时器的计数方式为向上计数,且ARR重载值为99时正好定时为1s。当CNT=ARR值时定时时间1s到,灯亮。(加到够就跳回 0)我们不需要重新修改ARR寄存器的值,继续重装载为99,即可继续定时1s,灯灭。这时就算不设置缓冲作用也没问题。
设置为LED灯1s亮,2s灭,不设置缓冲作用就会出现误差。如当CNT=ARR值时定时时间1s到,灯亮,但是后续要定时2s,所以要修改ARR寄存器的值为199,修改后立刻生效,开始计时。但是操作寄存器这个过程是需要时间的,即使时间很短,也是存在误差的。这种情况下所以就需要设置缓冲。
(2)设置缓冲作用的情况:
如果设置了缓冲作用后,我们就可以提前将199写入ARR寄存器中,因为有缓冲作用,并不会立刻生效。会等到更新时间U发生后生效,更新时间u是在上一段定时时间到之后产生。

寄存器缓冲作用通过控制寄存器1位7来设置。
新手必看!!STM32定时器简介_第3张图片

3.计数器模式
新手必看!!STM32定时器简介_第4张图片

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

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

(3)中央对齐模式(递增/递减计数):
在中心对齐模式下,计数器从0开始计数到自动重载值(TIMx_ARR寄存器的内容) - 1,生成计数器上溢事件;然后从自动重载值开始向下计数到1生成计数器下溢事件。之后从0开始重新计数。

4.定时时间计算
在这里插入图片描述
arr:重装载值。
psc:预分频系数。
Tclk:定时器时钟。

注意:具体实现看下篇文章!!!

你可能感兴趣的:(stm32,单片机,定时器)