十五、定时器原理介绍
1.定时器基础知识
1.1.什么是定时器
定时器是单片机内部集成,可以通过编程控制。单片机的定时功能是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。比如我们想让一个led灯1秒钟翻转一次,就可以使用定时器配置为1秒钟触发中断,然后在中断函数中执行led翻转的程序。
1.2.GD32定时器
GD32F407VET6一共有14个定时器,可以分为五种类型,高级定时器0/7、通用定时器(L0)1-4、通用定时器(L1)8/11、通用定时器(L2)9/10/12/13和基本定时器5/6。不同类型的定时器所拥有的功能数量不同,一般高级定时器的功能最多,通用定时器次之,基本定时器功能最少。具体功能对照可以查看用户手册的第349页。
1.3.高级定时器
高级定时器(TIMER0和TIMER7)是四通道定时器,支持输入捕获和输出比较。可以产生PWM信号控制电机和电源管理。高级定时器包含了一个死区时间插入模块,非常适合电机控制。
高级定时器的主要特性如图1-3-1所示。
关于更多高级定时器的功能描述可以查看用户手册的第357页,具体功能目录如图1-3-2所示。
1.4.通用定时器(L0)
通用定时器L0(TIMER1、TIMER2、TIMER3和TIMER4)是4通道定时器,支持输入捕获,输出比较,产生PWM信号控制电机和电源管理。
通用定时器(L0)的主要特性如图1-4-1所示。
对比图1-3-1和图1-4-1可知,通用定时器(L0)比高级定时器少了可编程的死区时间、可编程的计数器重复功能和中止输入功能使定时器按照用户的配置输出的功能。
关于更多通用定时器(L0)的功能描述可以查看用户手册的第401页。
1.5.通用定时器(L1)
通用定时器L1(TIMER8和TIMER11)是两通道定时器,支持输入捕获和输出比较,可以产生PWM信号控制电机和电源管理。
通用定时器(L1)的主要特性如图1-5-1所示。
关于更多通用定时器(L1)的功能描述可以查看用户手册的第441页。
1.6.通用定时器(L2)
通用定时器L2(TIMER9、TIMER10、TIMER12和TIMER13)是单通道定时器,支持输入捕获,输出比较,产生PWM信号控制电机和电源管理。
通用定时器(L2)的主要特性如图1-6-1所示。
注意一下图1-6-1红线部分,这个在用户手册里写错了,通用定时器(L2)只有向上计数模式。
关于更多通用定时器(L2)的功能描述可以查看用户手册的第464页。
1.7.基本定时器
基本定时器(TIMER5和TIMER6)包含一个无符号的16位计数器。可以被用作通用定时器和为DAC(数字到模拟转换器) 提供时钟。基本定时器可以配置产生DMA请求,TRGO触发连接到DAC。
基本定时器的主要特性如图1-7-1所示。
关于更多基本定时器的功能描述可以查看用户手册的第483页。
2.定时器基本参数
2.1.预分频
预分频器可以将定时器的时钟(TIMER_CK)频率按1到65536之间的任意值分频,分频后的时钟PSC_CLK驱动计数器计数。分频系数受预分频器TIMERx_PSC控制。这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采用。
分频器的分频公式为:PSC_CLK = TIMER_CK/ (TIMERx_PSC +1)
2.2.向上计数模式
计数器从0开始向上连续计数到自动加载值(定义在TIMERx_CAR寄存器中),一旦计数器计数到自动加载值,会重新从0开始向上计数并产生上溢事件。
2.3.更新事件
更新事件是当计数器上溢或者下溢而开始新的计数周期时触发的。更新事件可以触发DMA请求,以用于在下一个计数周期开始时及时更新定时器的运行参数,特别适合用于实时控制。
3.定时器应用
如果项目中需要定时执行或者需要重复执行一定的工作, 定时器的使用尤为重要。在下一章将会介绍如何去配置定时器,定时1秒钟进入一次中断,然后在定时器中断服务函数中实现1秒钟led电平状态翻转1次。最后实现的效果就是led亮1秒钟灭1秒钟。