通过对定时器基础知识的讲解,实现对定时器的操作。
1.认识定时器
定时器是嵌入式学习中极其重要的一部分内容,定时器通常由计数器和一组控制寄存器组成,计数器通常用来计数,而控制寄存器通常用来配置计数器的技术模式、计数范围、时钟源等。工作原理:设置一个值,计数器计数值不断累加,当达到预先设定的值时,就会触发中断或产生输出一个脉冲。定时器的功能很强大,可以用来定时、计数、PWM产生、输入捕获、定时中断等。
2.定时器基本原理
通过查看STM32G431RBTx数据手册的定时器内部结构图可知,在APB1和PAB2总线上一共挂有10个定时器,其中,两个基本定时器(TIM6,TIM7),三个全功能通用定时器(TIM2,TIM3,TIM4),三个只有一个通道或两个通道的通用定时器(TIM15,TIM16,TIM17),以及两个高级定时器(TIM1,TIM8)。
就功能而言,基本定时器、通用定时器、高级定时器相当于一个结构层次,通用定时器的功能涵盖了基本定时器的功能,高级定时器的功能涵盖了通用定时器的功能。通过对时钟树都观察可知,并不是直接将APB1、APB2给到定时器,而是通过倍频的方式给到定时器,,对于x1,x2的主要取决与PCLK前面的分频,如果PCLK前面的分频是1,那么就是x1,如果PCLK前面的分频是其他,那么就是x2,这样就保证了时钟的高频率。
以上表格是对定时器的一些说明,包括计数器分频率、计数器类型、预分频系数、DMA请求、捕捉/比较通道、互补输出等。
计数器分频率:决定计数器的计数范围,比如16-Bit(0-65535);
预分频系数:1-65535;
捕获/比较通道:PWM等
计数器类型:向上计数、向下计数、向上/向下计数
向上计数模式:计数器从0计数到自动重装值(TIMx_ARR),然后归0,继续计数。
向下计数模式:计数器从自动重装载值(TIMx_ARR)开始向下计数到0,再回到自动重装载值重新开始向下计数。
中央对齐模式:计数器从0开始计数到自动重装载值的-1,然后产生溢出中断(产生一个计数器溢出事件),然后向下计数到1产生一个计数器溢出事件;然后从0开始重新计数。
定时器周期计算公式:T=(arr+1)*(PSC+1)/TcK;
其中TcK为时钟频率,PSC为时钟预分频系数,,arr为自动重载值。例如:如果TcK=80MHz,PSC=80-1,arr=1000-1;则T=10ms,即中断开启的加10ms进入一次中断。
3.编程实战
实验现象:指示灯LD1、LD2以1m的时间间隔闪烁.
步骤;
1.查看原理图,找到与指示灯相对应的引脚。
2.对STM32CubeMX的操作如下,
(1)选择定时器1,将定时器来源(Clock Source)改为内部时钟(Internal Clock);
(2)对预分频系数、计数模式、计数周期等进行配置;
(3)开启中断使能;
(4)对时钟树进行配置;
(5)设置输出keil工程文件基本参数
3.代码流程编写参考
(1)设置时钟预分频系数;
(2)设置自动重载值;
(3)使能中断;
(4)启用定时器;
(5)操作指示灯;
(6)清除中断标志;
HAL库代码将会在后期更新!!