系统定时器(SysTick)介绍
SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。
因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
寄存器介绍
SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
![](https://img-blog.csdnimg.cn/direct/ce5cc1ff93534b3c9710f6667cfc247b.png)
CTRL控制以及状态寄存器使用方法
![](https://img-blog.csdnimg.cn/direct/bfd658f437414f24995e602b27b80911.png)
LOAD重装载数值寄存器
![](https://img-blog.csdnimg.cn/direct/2960d362dc8243f9a67fe5d88714e44d.png)
VAL当前数值寄存器
![](https://img-blog.csdnimg.cn/direct/13be154374be47748662ec82b20d3583.png)
系统定时器(SysTick)使用
CubeMX配置流程
1.配置好RCC时钟
![](https://img-blog.csdnimg.cn/direct/03c0d8fb6e204565817fbb3e1ccbb102.png)
2.配置好时钟来源,时钟频率
![](https://img-blog.csdnimg.cn/direct/cfaf2c33d1bb461c9932c17220a6a873.png)
3.SYS配置
![](https://img-blog.csdnimg.cn/direct/a469afa8f45b448798024721a7a3e223.png)
4.配置SYS时钟频率
![](https://img-blog.csdnimg.cn/direct/7d066b8ef99d47e2a39f49e9da74be65.png)
工程代码介绍
使用系统定时器实现,Delay的功能
//时钟初始化配置
void SysTick_Init(void)
{/* SystemFrequency / 1000 1ms中断一次* SystemFrequency / 100000 10us中断一次* SystemFrequency / 1000000 1us中断一次*/if (HAL_SYSTICK_Config(SystemCoreClock / 1000)){ /* Capture error */ while (1);}
}
//延时函数
void Delay_us(__IO u32 nTime)
{ TimingDelay = nTime; while(TimingDelay != 0);
}
//中断调用函数
void TimingDelay_Decrement(void)
{if (TimingDelay != 0x00){ TimingDelay--;}
}
//中断函数
void SysTick_Handler(void)
{HAL_IncTick();TimingDelay_Decrement();
}