STM32F3与F系列Cortex M4系统滴答定时器
发布网友
发布时间:2024-09-07 09:45
我来回答
共1个回答
热心网友
时间:2024-10-26 18:38
系统滴答定时器概述
系统滴答定时器的概念源于对时间的精准计数。计数,即对数值的连续加一,可以视为定时的基础。定时,就是按照预设的规律进行计数,以实现特定时间间隔的精确控制。
系统滴答定时器的核心组成包括计数器和频率计。计数器负责记录经过的计数次数,频率计则用于确定计数的频率,即每经过多长时间进行一次计数。通过调整计数次数和频率,可以精确地设定定时的时间长度。
系统滴答定时器存在于内核内部,这一设计使得在操作系统的环境下,能够提供一种统一且稳定的时基节拍。在ARM7/9系列之前,各个芯片厂商需要自行设计定时器,这种情况下,从一款芯片移植到另一款芯片时,移植工作变得极为复杂。随着Cortex-M系列的出现,ARM公司提供了一个标准化的系统滴答定时器,用于为操作系统提供统一的时基。这一定时器在后续学习的UCOSII操作系统中得到了应用,用于实现系统级别的定时功能。
系统滴答定时器的主要特征包括:
\1. 作为内核的一部分存在。
\2. 能够触发中断。
\3. 提供两种时钟源选择,即内部时钟源和外部时钟源。
\4. 通过四个寄存器控制系统的滴答定时器。
\5. 配备一个24位的倒计数器,用于实现精确的计时。
系统滴答定时器的框架由时钟脉冲、时钟源、LOAD寄存器等关键元素构成。时钟脉冲决定计数的时间间隔,时钟源则决定了计数的频率,而LOAD寄存器则决定了计数的次数。这三个元素共同作用,决定了定时器的总定时时间。
系统滴答定时器相关的寄存器包括时钟源选择寄存器、LOAD寄存器、写VAL寄存器等,用于设定定时器的工作参数。
在进行系统滴答定时器程序设计时,需计算定时时间与LOAD值之间的关系。定时时间(us)可以通过以下公式计算得出:
定时时间(us)=周期*计数次数
=1/定时频率*计数次数
=1/21M*LOAD
=LOAD/21
其中,1M表示每秒翻转1百万次,1s等于1000微秒或一百万微秒。
系统滴答定时器提供了两种使用方式:查询方式和中断方式。
在查询方式下,需要通过设置时钟源(21M)、配置重载值(LOAD)、写入VAL(清除VAL、重装载、清标志)、开启定时器、等待定时时间到期(查询COUNTFLAG)以及关闭定时器等步骤进行延时操作。
在中断方式下,通过选择时钟源(21M)、配置重载值(LOAD)、写入VAL、使能中断(设置NVIC优先级、模块级中断使能)、开启定时器,并编写中断服务函数(清标志)实现定时中断功能。