●什么是SysTick
SysTick是一个定时器,这个定时器的特殊之处在于,它是有内核来管理的,因此SysTick也被称作是内核定时器。它完全独立于STM32芯片,无论是哪款芯片都会有SysTick定时器只要芯片的内核一样,那么SysTick的使用方法就一样
●SysTick的作用
对于STM32这样的高级芯片,我们可以给它搭载一个操作系统。操作系统是有定时器的,那么操作系统的定时器就是基于SysTick来设计出来的。操作系统在设计定时器的时候无法估计它本身是搭载在哪一种芯片上的,而对于一个系列的芯片它们的内核是一样的,因此操作系统的定时器需要基于内核来设计。只有基于SysTick设计出来的操作系统才能移植到更多的芯片上。
●CM4内核的SysTick
1、功能描述
SysTick被捆绑在NVIC中,用于产生SysTick异常,而且SysTick是一个倒数的定时器。
2、寄存器
SysTick_CTRL 控制和状态寄存器
内部时钟是AHB,外部时钟是AHB/8。关于FCLK和STCLK可以参考时钟树。
SysTick_LOAD 重载值寄存器
SysTick_VALUE 当前计数值寄存器
3、从手册到流程
Systick是一个倒数的定时器,SysTick_VALUE代表当前的计数值是多少,一旦当前计数值为零,SysTick_LOAD的值就会自动重新装载到SysTick_VALUE。在计数为零的同时会产生一个标志,通过读取这个标志我们可以判断当前计数是否为零。在控制寄存器中还有一位是中断使能位,如果要使用中断功能,那么将这一位置1。另外systick有两个时钟可以选择,一个是AHB,另外一个是AHB/8。总结出systick的配置流程:
1)选择时钟源
2)设置重载值
3)清空当前值
4)使能中断(如果需要)
5)使能systick
4、从流程到代码