您的位置:首页 > 其它

systick定时器

qq_33214029 2020-07-21 04:14 155 查看 https://blog.csdn.net/qq_33214

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;
}
}
标签: