SysTick定时器(系统滴答定时器)

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)

使用说明

  1. SysTick运行于处理器时钟,如果该时钟信号在低功耗模式下停止,则SysTick计数器停止
  2. 由于STK_LOAD和STK_VAL数值不确定,所以正确初始化顺序为:
    a)软件设置STK_LOAD的值
    b)清空STK_VAL的值
    c)设置控制状态寄存器(包括使能定时器)

你可能感兴趣的:(单片机学习)