一、SysTick定时器基础知识讲解
1、是一个简单的定时器,对于ST的CM3、CM4、CM7内核芯片,都有Systick定时器
2、常用来做延时,或者定时系统的心跳时钟,这样可以节省MCU资源,不用浪费一个定时器,比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。
3、SysTick定时器就是系统滴答定时器,一个24位的到技术定时器,计到0时,将从RELOAD寄存器中自动重装定时处值,只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。
4、Systick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常好15)
5、SYSTick终端的优先级也可以设置。
6、4个SysTick寄存器
*CTRL 控制和状态寄存器
对于STM32,外部时钟源是HCLK(AHB总线时钟)的1/8
内核时钟是HCLK时钟
配置函数 HAL_SYSTICK_CLKSourceConfig();
*LOAD 自动重载除值寄存器
24位寄存器,当倒数至零时,将被重装载的值
*VAL 当前值寄存器——从上往下计数,当前值,写它则使之清零,同时还会清除SysTick控制及状态寄存器中的COUNTFLAG标志
*CALIB 校准值寄存器
二、SYSTick相关寄存器库函数讲解
*HAL库中的Systick相关函数
HAL_SYSTICK_CLKSourceConfig(); //Systick时钟源选择
Systick_Config(uint32_t ticks); 初始化SYSTick,时钟为HCLK,并开启中断
*Systick中断服务函数: void SysTick_Handler(void)
三、delay延时函数讲解(SysTick应用)