在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32下一种精确延时函数的实现:
时钟树
下图中紫色的 to Cortex System timer(MHz)就是Systick的时钟频率;
SYSTICK原理
SysTick 是一个24位的倒计数定时器,当计到0时,将从RELOAD寄存器中自动重装载定时初值并继续计数,且同时触发中断。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。
SysTick 的最大使命,就是定期地产生异常请求,作为系统的时基,产生一个周期性的中断。
Systick定时器的四个寄存器:
CTRL: Systick控制和状态寄存器
LOAD: Systick重装载寄存器
VAL: Systick当前值寄存器