Systick定时器简介:
Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。
Systick有四个相关的寄存器:
CTRL SysTick 控制和状态寄存器
LOAD SysTick 自动重装载除值寄存器
VAL SysTick 当前值寄存器
CALIB SysTick 校准值寄存器
固件库V3.5中Systick的相关函数如下:
SysTick_CLKSourceConfig() //Systick时钟源选择
SysTick_Config(uint32_t ticks) //初始化systick,时钟为HCLK,并开启中断
Systick中断服务函数:
void SysTick_Handler(void);
使用systick查询延时nus的设计思路:
1.计算出产生1us 需要多少个时钟周期 fac_us;
2.计算出RELOAD寄存器的值
(也就是产生相应延时所需要的时钟周期数);
RELOAD=fac_us * nus
3.开启计数;
4.循环检测计数到0的标志位;