十五、定时器原理介绍
定时器基础知识
什么是定时器
定时器是单片机内部集成,可以通过编程控制。单片机的定时功能是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。比如我们想让一个 led 灯 1 秒钟翻转一次,就可以使用定时器配置为 1 秒钟触发中断,然后在中断函数中执行 led 翻转的程序。
STM32 定时器
STM32F407VET6 一共有 14 个定时器,包括 2 个高级控制定时器、8 个通用定时器、2 个基本定时器和 2 个看门狗定时器。
高级定时器
高级定时器(TIMER1 和 TIMER8)是四通道定时器,支持输入捕获和输出比较。可以产生 PWM 信号控制电机和电源管理。
高级定时器的主要特性如图所示。
关于更多高级定时器的功能描述可以查看数据手册的第 32 页,具体功能目录如图所示。
通用定时器
TIM2、TIM3、TIM4 和 TIM5
通用定时器 TIM2、TIM3、TIM4 和 TIM5 是 4 通道定时器,支持输入捕获和输出比较,可以产生 PWM 信号控制电机和电源管理。
主要特性如图所示。
关于更多通用定时器的功能描述可以查看数据手册的第 33 页。
TIM9、TIM10、TIM11、TIM12、TIM13 和 TIM14
通用定时器 TIM9、TIM10、TIM11、TIM12、TIM13 和 TIM14 是单通道定时器,支持输入捕获,输出比较,产生 PWM 信号控制电机和电源管理。
主要特性如图所示。
关于更多通用定时器的功能描述可以查看数据手册的第 33 页。
基本定时器
基本定时器(TIMER6 和 TIMER7)包含一个无符号的 16 位计数器。可以被用作通用定时器和为 DAC(数字到模拟转换器) 提供时钟。基本定时器可以配置产生 DMA 请求,TRGO 触发连接到 DAC。
基本定时器的主要特性如图所示。
关于更多通用定时器的功能描述可以查看数据手册的第 33 页。
定时器基本参数
预分频
预分频器可以将定时器的时钟(TIMER_CK)频率按 1 到 65536 之间的任意值分频,分频后的时钟 PSC_CLK 驱动计数器计数。分频系数受预分频器 TIMERx_PSC 控制。这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采用。
分频器的分频公式为:PSC_CLK = TIMER_CK / (TIMERx_PSC +1)
向上计数模式
计数器从 0 开始向上连续计数到自动加载值(定义在 TIMERx 寄存器中),一旦计数器计数到自动加载值,会重新从 0 开始向上计数并产生上溢事件。
更新事件
更新事件是当计数器上溢或者下溢而开始新的计数周期时触发的。更新事件可以触发 DMA 请求,以用于在下一个计数周期开始时及时更新定时器的运行参数,特别适合用于实时控制。
定时器应用
如果项目中需要定时执行或者需要重复执行一定的工作, 定时器的使用尤为重要。在下一章将会介绍如何去配置定时器,定时 1 秒钟进入一次中断,然后在定时器中断服务函数中实现 1 秒钟 led 电平状态翻转 1 次。最后实现的效果就是 led 亮 1 秒钟灭 1 秒钟。