SysTick-系统定时器是CM3内核中的一个外设,内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。系统定时器是一个24bit的向下递减的计数器,计数器计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于72M。
因为SysTick属于内核外设,跟普通外设的中断优先级有区别,并没有抢占优先级和子优先级的说法,内核外设的中断优先级由内核SCB这个外设寄存器配置。
1.SYSTick寄存器介绍
系统定时器有4个寄存器,使用SysTick产生定时时候,只需要配置前面三个,最后一个校准寄存器不需要使用。
| 寄存器名称 | 寄存器描述 |
| CTRL |
SysTick控制及状态寄存器 |
| LOAD | SysTick重装载数值寄存器 |
| VAL | SysTick当前数值寄存器 |
| CALIB | SysTick校准数值寄存器 |
SysTick控制及状态寄存器
| 位段 | 名称 | 类型 | 复位值 | 描述 |
| 16 | COUNTFLAG | R/W | 0 |
如果在上次读取本寄存器后,SysTick 已经计到了 0,则该位为 1。
|
| 2 | CLKSOURCE | R/W | 0 |
时钟源选择位,0=AHB/8,1=处理器时钟 AHB
|
| 1 | TICKINT | R/W | 0 |
1=SysTick 倒数计数到 0 时产生 SysTick 异常请求,0=数到 0 时无动作。也可以通过读取COUNTFLAG 标志位来确定计数器是否递减到0
|
| 0 | ENABLE | R/W | 0 |
SysTick 定时器的使能位
|
2.SysTick中断时间的计算

3.SysTick定时
- 设置重装载寄存器的值
- 清除当前数值寄存器的值
- 配置控制与状态寄存器的值
可由HAL_SYSTICK_Config函数直接配置,在中断服务器函数SysTick_Handler进行更大时间的定时计算。
本文介绍了SysTick系统定时器的基本概念及其在CM3内核中的应用。详细讲解了SysTick定时器的四个寄存器的功能,以及如何通过配置这些寄存器实现定时功能。此外,还介绍了SysTick中断时间的计算方法。
646

被折叠的 条评论
为什么被折叠?



