stm32 系统滴答定时器Systick

Systick定时器简介:

  1. Systick定时器就是系统滴答定时器,Systick定时器,是一个简单的定时器,对于ST的CM3, CM4,CM7内核芯片,都有Systick定时器。Systick定时器常用来作延时,或者实时系统的心跳时钟,这样可以节省MCU资源,不用浪费一个定时器。
  2. Systick定时器是一个24位的倒计数定时器,计时到0时,将从RELOAD寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器的使能位清除,就永远不会停止,即使是在睡眠模式下也能工作。Systick定时器被捆绑在NVIC中,用于产生Systick异常。可设置其中断优先级。

Systick寄存器
Systick定时器共存在4个寄存器,具体如下所示:
stm32 系统滴答定时器Systick_第1张图片

1) 在Systick控制和状态寄存器-CTRL中,有4个比较重要的位,分别为计数至0标志位,时钟源位,Systick异常使能位,Systick定时器使能位。具体配置方法如下图所示:
stm32 系统滴答定时器Systick_第2张图片
(注意: 对于STM32,外部时钟源是HCLK的1/8,内核时钟是HCLK)
配置systick_clocksource的函数为:HAL_SYSTICK_CLOCKSourceConfig();

2)Systick重装载数值寄存器LOAD的配置方法如下:
stm32 系统滴答定时器Systick_第3张图片

3)Systick当前值寄存器-VAL配置方法如下:
stm32 系统滴答定时器Systick_第4张图片

另外介绍一下HAL库中与Systick相关的函数:

1.HAL_SYSTICK_CLKSourceConfig(); //Systick时钟源选择 与寄存器CTRL中的clocksource位相对应。

2.SysTick_Config(uint32_t ticks) //初始化systick,并开启中断。

3.SYStick中断服务函数 void Systick_Handler(void);

上述的时钟源选择和初始化函数在下面的程序中体现:

stm32 系统滴答定时器Systick_第5张图片

stm32 系统滴答定时器Systick_第6张图片

你可能感兴趣的:(stm32)