STM32系统定时器-SysTick

SysTick-系统定时器是CM3内核中的一个外设,内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。系统定时器是一个24bit的向下递减的计数器,计数器计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于72M。

因为SysTick属于内核外设,跟普通外设的中断优先级有区别,并没有抢占优先级和子优先级的说法,内核外设的中断优先级由内核SCB这个外设寄存器配置。

1.SYSTick寄存器介绍

系统定时器有4个寄存器,使用SysTick产生定时时候,只需要配置前面三个,最后一个校准寄存器不需要使用。

寄存器名称 寄存器描述
CTRL

SysTick控制及状态寄存器

LOAD SysTick重装载数值寄存器
VAL SysTick当前数值寄存器
CALIB SysTick校准数值寄存器

SysTick控制及状态寄存器

位段 名称 类型 复位值 描述
16 COUNTFLAG R/W 0
如果在上次读取本寄存器后, SysTick 已经计到了 0 ,则该位为 1
2 CLKSOURCE R/W 0
时钟源选择位, 0=AHB/8 1= 处理器时钟 AHB
1 TICKINT R/W 0
1=SysTick 倒数计数到 0 时产生 SysTick 异常请求,0= 数到 0 时无动作。也可以通过读取COUNTFLAG 标志位来确定计数器是否递减到0
0 ENABLE R/W 0
SysTick 定时器的使能位

 

2.SysTick中断时间的计算

STM32系统定时器-SysTick

3.SysTick定时

  • 设置重装载寄存器的值
  • 清除当前数值寄存器的值
  • 配置控制与状态寄存器的值

可由HAL_SYSTICK_Config函数直接配置,在中断服务器函数SysTick_Handler进行更大时间的定时计算。