SysTick定时器(系统滴答定时器)
- 24位倒数计时器
- 当倒数到0时产生中断(如果使能SysTick异常请求)
- 可编程的时钟源选择(2个)
SysTick时钟源选择
STCLK:外部时钟源(HCLK的8分频)
FCLK:内核时钟(HCLK时钟)
时钟源选择可在SysTick控制和状态寄存器中进行配置
SysTick寄存器
STK_CTRL:控制状态寄存器(Reset Value:0x00000000)
STK_LOAD:重装载数值寄存器(位段:23-0)(Reset Value:Unknown)
STK_VAL:当前数值寄存器(位段:23-0)(Reset Value:Unknown)
STK_CALIB:校准数值寄存器(Reset Value:0xC0000000)
SysTick相关函数
// SysTick时钟源选择函数。在misc.c文件中
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
// 初始化SysTick,默认时钟为HCLK,并开启中断。在core_cm3.h或core_cm4.h文件中
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
// SysTick中断服务函数
void SysTick_Handle(void)
使用说明
- SysTick运行于处理器时钟,如果该时钟信号在低功耗模式下停止,则SysTick计数器停止
- 由于STK_LOAD和STK_VAL数值不确定,所以正确初始化顺序为:
a)软件设置STK_LOAD的值
b)清空STK_VAL的值
c)设置控制状态寄存器(包括使能定时器)