STM32 HAL库开发学习5. 系统滴答定时器
  • 一、滴答定时器概述
  • 1. 概述
  • 2. 时钟源
  • 3. 寄存器
  • (1)控制与状态寄存器 STK_CTRL
  • (2)重载寄存器 STK_LOAD
  • (3)当前值寄存器 STK_VAL
  • 二、HAL库滴答定时器初始化
  • 三、SysTick实现微秒级延时
  • 1. 使用 STM32CubeMX创建工程
  • 2. 代码实现

一、滴答定时器概述

1. 概述

滴答定时器是Cortext-M内核的一个简单定时器。
滴答定时器是一个24位的递减计数器,主要用于为嵌入式系统提供基本的定时功能,也为实时操作系统RTOS提供系统节拍。

2. 时钟源

滴答定时器有两个可选的时钟源,一个是处理器内核时钟: HCLK,另一个是外部参考时钟。

当定时器启动后,它会从设定的初始值开始递减计数。每经过一个时钟周期,计数器值减1.当计数器减到0,会产生一个中断请求,并且可以根据设置重新加截初始值。

3. 寄存器

(1)控制与状态寄存器 STK_CTRL

该寄存器用于控制滴答定时器的主要功能。其中包含了启动 / 停止定时器的位(ENABLE 位),如果将此位置 1,则启动定时器;若置 0,则停止定时器。
还有用于控制中断使能的位(TICKINT 位),当这个位置 1 时,定时器计数到 0 时会产生中断;置 0 则禁止中断。
另外,有一个位用于指示定时器当前是否正在计数(COUNTFLAG 位),可以通过读取这个位来确定定时器是否已经完成了一次计数循环。

(2)重载寄存器 STK_LOAD

这个寄存器用于设置滴答定时器的初始计数值。因为定时器是 24 位的,所以可以设置的最大值为 。通过设置这个寄存器的值,可以确定定时器每次计数循环的时长。例如,根据所选的时钟源频率和想要实现的定时周期,计算出相应的初始值并写入这个寄存器。

(3)当前值寄存器 STK_VAL<