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中断时间的计算
3.SysTick定时
- 设置重装载寄存器的值
- 清除当前数值寄存器的值
- 配置控制与状态寄存器的值
可由HAL_SYSTICK_Config函数直接配置,在中断服务器函数SysTick_Handler进行更大时间的定时计算。