1.介绍:
systick定时器用来给任务分配时间,系统执行一次所需要的时间
2.代码:
1.systick初始化函数
STM32时钟为72MHZ,systick中断一次的时间为t/72000000(秒),通过修改t可以修改定时一次的时间
下面是配置为系统1ms的程序
void SysTick_Init(void)
{
if(SysTick_Config(72000000/1000))
{
while(1);
}
}```
2.计数一次为1ms的定时,想延时多少就调用该函数
void SysTick_Delay_Ms( __IO uint32_t ms)
{
uint32_t i;
SysTick_Config(SystemCoreClock/1000);
for(i=0;i<ms;i++)
{
// 当计数器的值减小到0的时候,CRTL寄存器的位16会置1
// 当置1时,读取该位会清0
while( !((SysTick->CTRL)&(1<<16)) );
}
// 关闭SysTick定时器
SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
}
3.中断处理函数
计数一次时间可随意配置,当时间减为0可调用该中断
void SysTick_Delay_Ms_ByInt(volatile int32_t mS)
{
gDelayTime = mS;
if(SysTick_Config(72000000/1000))
{
while(1);
}
}
//ÔÚit.c Îļþµ÷ÓÃ
void Tick_INT_Handle(void)
{
if(gDelayTime != 0)
{
gDelayTime--;
}
else
{
;//SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
}