1.前言
上一篇文章介绍了Systick嘀嗒定时器控制LED的闪烁,这篇文章我们来介绍一下STM32单片机中的通用定时器的部分,使用定时器来控制两个LED灯的交替闪烁。同样地,我们所使用的硬件设备仍然是STM32RCT6单片机等基础设备,关于单片机的原理图以及LED灯的引脚在前文均已详细介绍,这里我们就不再赘述。
2.定时器详解
什么是定时器
定时器顾名思义就是可以用来定时的,我们可以设置想要的定时时间,然后去做很多事情。STM32的定时器功能很强大,可以用来定时、计数、PWM产生、输入捕获以及定时器中断等,它是存在于STM32单片机中的一个外设。STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)。
定时器的时钟详解
先是8MHz的信号经过PLL倍频后送入系统时钟SYSCLK,SYSCLK经过AHB预分频后分别送至APB1和APB2定时器的时钟来自APB1和APB2的的倍频信号,最后经过APB1和APB2的预分频后送入通用定时器时钟。其框图如下所示:
通用定时器的工作原理
通用原理的工作框图如下所示,这个图包含了定时器的工作方式和工作原理。
通用定时器具有向上计数、向下计数、向上向下双向计数模式。
①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
这里我们主要使用向上计数模式,定时器时间有以下计算公式
定时器频率 =((1+TIM_Prescaler )/72M)*(1+TIM_Period )