十五、定时器原理介绍
1. 定时器基础知识
1.1 什么是定时器
定时器是单片机内部集成,可以通过编程控制。单片机的定时功能是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。比如我们想让一个led灯1秒钟翻转一次,就可以使用定时器配置为1秒钟触发中断,然后在中断函数中执行led翻转的程序。
1.2 HC32定时器
HC32F4A0PITB芯片有通用定时器、通用控制定时器和高级控制定时器。
- 高级定时器(Timer6):搭载 8 个单元的 Timer6(U1~4 为 32bit 定时器; U5~U8 为 16bit 定 时器)。
- 通用控制定时器(Timer4):搭载 3 个单元的 Timer4。
- 通用定时器(TimerA):搭载 12 个单元 TimerA,最大可实现 48 路 PWM 输出。
- 通用定时器(Timer2):搭载 4 个单元的 Timer2。
- 通用定时器(Timer0):搭载 2 个单元的 Timer0。
1.3 高级控制定时器(Timer6)
高级控制定时器 6(Timer6)是一个 16 位计数宽度的高性能定时器,能在各种复杂应用场景中提供丰富、灵活的搭配组合和各种中断、事件、 PWM 输出。该定时器支持锯齿波和三角波两种波形模式,可生成各种 PWM 波形(单边对齐独立 PWM、双边对称独立 PWM、双边对称互补 PWM、双边非对称 PWM等);单元间可实现软件同步和硬件同步(同步启动、停止、清零、刷新等);各基准值寄存器支持缓存功能(单级缓存和双级缓存);支持脉宽测量和周期测量;支持 2 相正交编码和 3 相正交编码;支持EMB 控制。
关于更多高级定时器的功能描述可以查看用户手册的第494页,具体功能目录如图1-3-2所示。
1.4 通用控制定时器(Timer4)
通用控制定时器 4(Timer4)是一个用于三相电机控制的定时器模块,提供各种不同应用的三相电机控制方案。该定时器支持三角波和锯齿波两种波形模式,可生成各种 PWM 波形;支持缓存功能;支持EMB 控制。 主要功能框图:
1.5 通用定时器
1.5.5 TimerA
通用定时器 A(TimerA) 是一个具有 16 位计数宽度、 4 路 PWM 输出的定时器。 该定时器支持三角波和锯齿波两种波形模式,可生成各种 PWM 波形(单边对齐 PWM、双边对称 PWM);支持计数器同步启动;比较基准值寄存器支持缓存功能;支持单元间级联实现 32 位计数; 支持 2 相正交编码计数和 3相正交编码计数。
主要特性如图1-5-1所示。
1.5.6 Timer2
通用定时器 2(Timer2)是一个可以实现同步计数、异步计数方式的基本定时器。该定时器内含 2 个通道(CH-A 和 CH-B)。每个通道均有一个输出端口,可实现基本的方波输出;每个通道均有 2 个输入端口,一个是时钟输入端口,可实现端口异步计数;一个是触发输入端口,可实现定时器启动、停止、清零、计数动作及计数值捕获输入;支持脉宽测量和周期测量。
主要特性如图1-6-1所示。
1.5.7 Timer0
通用定时器 0(Timer0)是一个可以实现同步计数、异步计数方式的基本定时器。该定时器内含 2 个通道(CH-A 和 CH-B),可以在计数期间产生比较匹配事件。该事件可以触发中断,也可作为事件输出来控制其它模块等。
2. 定时器基本参数
2.1 时钟源
用于选择不不同的时钟源,得到的时钟频率也不一致。每个定时器的时钟源都不一样,详细的可以直接查看用户手册相关章节。
2.2 分频值
将时钟源进行分频操作,降低时钟周期,可以用来适配不同的场景。
2.3 比较值
可以理解为计数的数值,当数值达到设定的时候,可以用来触发中断或者重新装填数值,用来控制周期。
3. 定时器应用
如果项目中需要定时执行或者需要重复执行一定的工作, 定时器的使用尤为重要。在下一章将会介绍如何去配置定时器,定时0.5秒钟进入一次中断,然后在定时器中断服务函数中实现0.5秒钟led电平状态翻转1次。最后实现的效果就是led亮0.5秒钟灭0.5秒钟。