SysTick
SysTick概念:
SysTick,即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器。(0——16,777,215)
SysTick工作原理:
系统时钟经过8分频,产生9MHZ,VAL将从设定的LOAD重装载值往下递减,当VAL减到0时,将SysTick控制及状态寄存器(CTRL)的COUNTFLAG位置1,重新将重装载值LOAD赋值给VAL。
SysTick寄存器
1:SysTick控制及状态寄存器(CTRL)
2:SysTick重装载数值寄存器(LOAD)
程序代码
1:定时器初始化
将CTRL寄存器中的CLKSOURCE位置0,表示选择外部时钟源,将TICKINT置1,开启SysTick异常中断,将ENABLE位置1,使能SysTick。
注:SysTick时钟源为9MHZ,即一秒计数9000 000次,1us计算9次。
2:us延时
注:需先将VAL的值清零,再开启SysTick定时器,检测COUNTFLAG是否置1。
3:ms延时
注:延时不能超过SysTick的最大范围。(16,777,215/9=1864135us=1864ms)
总结:为了延时更加准确,所以采用了操作寄存器的方法,CubeMx生成的代码中包含有delay_ms()的代码,但是没用delay_us(),需要自行添加。