SYSTick 简介
系统定时器,24bit,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环复。因为 SysTick 是属于 CM3内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。SysTick 在STM32的参考手册里面介绍的很简单,其详细介绍,请参阅《Cortex-M3 权威指南》。
Systick 寄存器
SysTick控制及状态寄存器
位段 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
16 | COUNTFLAG | R/W | 0 | 如果在上次读取本寄存器后,SYSTick已经计数到0后则该为为1 |
2 | CLKSOURCE | R/W | 0 | 0:外部时钟 1:内部时钟 |
1 | TICKINT | R/W | 0 | 1:SYSTick倒数计数到0后产生SYSTick异常请求 0:计数到0无动作 |
0 | ENABLE | R/W | 0 | SYSTick定时器使能位 |
SysTick重装载数值寄存器
位段 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
23:0 | RELOAD | R/W | 0 | 当倒数计数为0时,此值将会被重装载 |
SysTick当前数值寄存器
位段 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
23:0 | CURRENT | R/W | 0 | 读取时返回当前倒计数的值,写他则使之清0 ,同时还会清除在systick控制及状态寄存器中的COUNTFLAG标志 |