以前都是随便用的延时函数都是c语言的延时函数或者TIM定时器,最近几年才用到正点原子的滴答定时器。
Systick定时器,是一个简单的定时器, Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。 Systick中断的优先级也可以设置。这个是寄存器设置函数了。所以这个可以作为设备运行计时函数,目前暂时还没设计到。
固件库中的Systick相关函数,库函数配置:
SysTick_CLKSourceConfig() //Systick时钟源选择
//位于misc.c函数199行
SysTick_Config(uint32_t ticks) //初始化systick,时钟为HCLK,并开启中断
//位于core_cm3.h的1694行
Systick中断服务函数:
void SysTick_Handler(void);
正点原子的delay延时函数: