SysTick 是一个 24 位定时器,属于 CM3 内核中的一个外设, 这个定时器放在了 NVIC 中,主要目的是为了给操作系统提供一个硬件上的中断。SysTick 定时器一次最多可以计数 2^24 个时钟脉冲,这个脉冲计数值保存在当前计数值 STK_VAL (Systick current value register)中,只能向下计数,也就是倒计数。 每接收到一个时钟脉冲, STK_VAL 的值就会向下减 1, 当减到 0 时, 硬件会自动将重装载寄存器 STK_LOAD 中保存的数值加载到 STK_VAL, 使其重新计数。系统定时器就产生一次中断,以此循环复, 只要不把它在 SysTick 控制及状态寄存器中的使能位清除,就永不停息。
SysTick 属于内核的外设,相关寄存器的定义和库函数都在内核相关的文件core_cm3.h 中