1. 基础概念
SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于180M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。
因为SysTick是属于CM4内核的外设,所以所有基于CM4内核的单片机都具有这个系统定时器,使得软件在CM4单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号: 15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。
例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
SysTick定时器能产生中断, CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间对其处理都是相同的。
有4个寄存器控制SysTick定时器,如表8.9至表8.12所示。
1.1 SysTick寄存器介绍
SysTick—系统定时有4个寄存器,简要介绍如下。在使用SysTick产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用
寄存器名称 |
寄存器描述 |
CTRL |
|
LOAD |
SysTick重装载数值寄存器 |
VAL |
SysTick当前数值寄存器 |
CALIB |
SysTick控制及状态寄存器
名称 |
类型 |
复位值 |
描述 |
|
16 |
COUNTFLAG |
R/W |
0 |
如果在上次读取本寄存器后, SysTick 已经计到 |
2 |
CLKSOURCE |
R/W |
0 |
时钟源选择位,0=AHB/8,1=处理器时钟AHB |
1 |
TICKINT |
R/W |
0 |
1=SysTick倒数计数到 0时产生 SysTick异常请 |
0 |
ENABLE |
R/W |
0 |
SysTick 定时器的使能位 |
SysTick 重装载数值寄存器
名称 |
类型 |
复位值 |
描述 |
|
23:0 |
RELOAD |
R/W |
0 |
当倒数计数至零时,将被重装载的值 |
表 184 SysTick当前数值寄存器
位段 |
名称 |