写在前面:定时器是STM32中一个十分重要的外设,并且在STM32中具有多个定时器。定时器的包括基本定时器、通用定时器以及高级控制定时器,这些定时器相关独立,不共享任何资源。当然,其难易程度也是逐渐增加的,我们当然是从简答的开始学习。本节就学习基本定时器。
一、定时器概述
1.1软件延时原理
定时器的一个设计初衷就是为了延时,而我们前面学习过使用软件延时;例如下面这段代码:
void Delay1us() //@11.0592MHz
{
_nop_();
_nop_();
_nop_();
}
其作用就是使晶振为11.0529Mhz的51单片机延时1微秒,它是如何进行延时的呢?是因为对于单片机来说,运行每一条程序都是需要一定的时间的,那么执行一定长度的没有实际作用的代码就能够延时CPU的一些时间,这就是软件延时的原理。
但是这种延时方式具有一些缺点,最明显的就是:延时时间不准确以及CPU死等;
1.2定时器定时原理
使用精确的时基,通过硬件的方式,实现定时功能,其核心是:计数器。与前面学习的看门狗有一定的相似之处。
1.3定时器分类
1.4STM32定时器特性
类型 | 名称 | 计数器类型 | 预分频系数 | 能否产生DMA请求 | 功能区别 |
基本定时器 | TIM6 TIM6 |
递增 | 1-65536 | 可以 | 没有输出通道,常用作时基,即定时功能。 |
通用定时器 | TIM2 TIM3 TIM4 TIM5 |
递增 递减 中央对齐 |
1-65536 | 可以 | 具有多路通路,可以用于输入捕获/输出比较,也可以做时基。 |
高级定时器 | TIM1 TIM8 |
递增 递减 中央对齐 |
1-65536 | 可以 | 除了具备通用定时器所有功能外,还具备带死区控制的互补信号输出、刹车等功能。 |
二、基本定时器
2.1基本定时器介绍
基本定时器:TIM6\TIM7;
特性:16位递增计数器,计数值:0-65535;
16位预分频系数,分频系数:1-65536;
可用于触发DAC,在更新时间下可产生中断/DMA;
2.2基本框图
1、时钟源
定时器的核心在于计数,首先需要给一个时钟源。基本定时器的时钟挂载在APB1总线上,所以它的时钟来自于APB1总线,但是基本定时器时钟不是直接APB1总线直接提供,而是先经过一个倍频器,当 APB1 的预分频器系数为 1 时,这个倍频器系数为 1, 即定时器的时钟频率等于 APB1 总线时钟频率;当 APB1 的预分频器系数≥2 分频时,这个倍频器系数就为 2 , 即定时器 的 时钟频率等于APB1总线时钟频率的两倍 。APB1 总线的预分频器分频系数是 2,所以挂载在 AP