工程代码:https://pan.baidu.com/s/1Qlfg1_br0tN6yy0fcDwCjg,密码:fhh2
(一)概述
STM32基本定时器实现基本的计时功能,通过相应的配置,实现微妙、毫秒级的定时和计数。
1、定时器框架
从图中可以看出,定时器时钟输入到定时器的触发控制器中,在通过"PSC预分频器“分频之后,周期性的使计数器CNT累加或者累减。当计算器CNT计算发生上溢或者下溢时,产生一个更新事件,标志一次计时周期到。
2、基本定时器的概念
2.1输入时钟频率
RCC的系统时钟为168M,而APB1总线上的时钟为系统时钟的1/4为42M,而当APB1总线上的时钟是由系统时钟多分频得到的时候,定时器的时钟=APB1总线时钟*2=84M。
2.2、定时器的计数方式
定时器时钟输入信号后,通过预分频器分频后,将驱动计数器进行计数。计数有两种模式,第一种是向上计数,计数器从0开始累加,当计数值等于TIM_ARR寄存器中的值时,产生一个更新事件;第二种是向下计数,计数器从TIM_ARR寄存器中的值开始累减,当计数值等于0时,产生一个更新事件。
3、寄存器介绍
①TIM_CR1寄存器主要配置定时器的循环计数、使能等操作
②TIM_CR2寄存器暂时不管
③TIM_DIER定时器是定时器的中断使能位
④TIM_SR是定时器的更新中断标志位,当计数发生上溢或者下溢时,该位将被置1,标志一次计数完成。
⑤TIM_EGR通过软件方式产生一次事件更新
⑥TIM_CNT时定时器的计数器,当定时器时钟经过预分频器之后产生一次脉冲时,CNT将计数一次
⑦TIM_PSC是预分频器,把定时器时钟分频之后,再输出给计数器。
⑧TIM_ARR是定时器的自动重载寄存器。当定时器采用向上计数时,当CNT计数值等于TIM_ARR时,将产生一个更新事件,通过把CNT清零重新计数;当定时器采用向下计数时,最开始将TIM_ARR的值赋给CNT,CNT向下累减为0时,将产生一个更新事件,再次将TIM_ARR的值赋给CNT进行新一轮的向下计数。