SysTick: 系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器(M0没有)由于只有24位,所以递减计数器和重装载寄存器的最大值为2的24次方。
递减计数器在时钟的驱动下,从重装载寄存器的初值开始往下递减计数到0,到0后产生中断,同时置位COUNTFLAG标志位(在STK_CTRL寄存器),然后重装载寄存器重新开始递减计数,如此循环。
STK_CTRL寄存器
SysTick控制及状态寄存器
COUNTFLAG: 当递减计数器为0时,置一;如果软件读取了该位,该位就会自动清零。
CLKSOURCE:时钟源选择位,为0时时钟等于总线时钟除以8;为1时等于总线时钟。
TICKINT:中断使能,当计数器减到0时,为0,不使能中断,不执行中断程序;为1,进入中断程序。
ENABLE:定时器开关,为1,打开;为0,关闭。
SysTick重装载数值寄存器
RELOAD:重装载寄存器, 当计数器为0时,重新装载进去。
SysTick当前数值寄存器
CURRENT: 递减寄存器。
SysTick定时时间计算
t = reload * (1/clk)
SysTick寄存器结构体
在固件库文件:core_cm3.h中定义
SysTick配置库函数
在固件库文件:core_cm3.h中定义