SysTick 简介
SysTick-系统定时器是属于CM3 内核中的一个外设,内嵌在NVIC 中。系统定时器是一个24bit 的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK 等于72M。当重装载数值寄存器的值递减到0 的时候,系统定时器就产生一次中断,以此循环往复。
SysTick 寄存器介绍
SysTick-系统定时器有4 个寄存器。
1、CTRL SysTick 控制及状态寄存器
该寄存器中有四个位有效,分别是:
第16位: COUNTFLAG,Systick 计数结束标志,如果在上次读取本寄存器后, SysTick 已经计到
了 0,则该位置 1。如果读取该位,该位将自动清零。用在查询方式上,确定计时结束,并开始新的计数。
第2位: 时钟源选择位,=0 时 AHB/8,=1 时 处理器时钟AHB
第1位: =1时,SysTick 倒数计数到 0 时产生 SysTick 异常请求;=0时,数到 0 时无动作,即中断使能位。(也可以通过读取 COUNTFLAG 标志位来确定计数器是否递减到0。)
第0位: SysTick 定时器的使能位
2、LOAD SysTick 重装载数值寄存器
Systick是一个递减的定时器,当定时器递减至0时,重装载寄存器中的值就会被重装载,继续开始递减。STK_LOAD 重装载寄存器是个24位的寄存器,最大计数 0xFFFFFF。
3、VAL SysTick 当前数值寄存器
当前数值寄存器也是个24位的寄存器,读取时返回当前倒计数的值。写它则使之清零,同时还会清除在 SysTick 控制及状态寄存器中的 COUNTFLAG 标志。
4、CALIB SysTick 校准数值寄存器
系统定时器的校准数值寄存器在定时实验中不需要用到。在这里放一下官方文档中的解释。
位段 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
31 | NOREF | R | 0 | NOREF flag. Reads as zero. Indicates that a separate reference clock is provided. The frequency of this clock is HCLK/8 |
30 | SKEW | R | 1 | Reads as one. Calibration value for the 1 ms inexact timing is not known because TENMS is not known. This can affect the suitability of SysTick as a software real time clock |
23:0 | TENMS | R | 0 | Indicates the calibration value when the SysTick counter runs on HCLK max/8 as external clock. The value is product dependent, please refer to the Product Reference Manual, SysTick Calibration Value section. When HCLK is programmed at the maximum f |