使用Systick定时器实现延时
一、SysTick定时器特性
- SysTick定时器是一个24位的递减计数器,即vlue自减等于0时触发中断,并重新加载load值,如此循环。
- 在stm32f4库文件中,默认将优先级设置为最低优先级,可进入函数SysTick_Config查看优先级设置。
- SysTick是Cortex-M内核的一部分,因此只要是Cortex-M内核都有该定时器。
- SysTick的时钟源可由HCLK产生,或则HCLK/8产生。
二、如何使用SysTick定时器
既然是定时器,那么至少应该设置2方面内容:
1. 定时时间
2. 定时时间到后做什么。
三、程序解析
1. SysTick定时器初始化
在SysTick定时器初始化需要注意SysTick时钟的选择,如果使用8分频一定要在SysTick_Config执行后,才执行时钟函数SysTick_CLKSourceConfig,否则时钟分频无效。
static void SysTickInit(void)
{
#ifdef SysTick_HCLK_Div8 /* SysTick时钟源为HCLK的8分频 */
/* SystemCoreClock/1000/8 1ms
* SystemCoreClock/100000/8 10us
* SystemCoreClock/1000000/8 1us
*/
SysTick_Config(SystemCoreClock/1000/8);
/*