【stm32f103】SysTick实现延时(寄存器版)

一.SysTick寄存器介绍

SysTick要参照Programming manual手册,寄存器一共有4个,如图:

分别为STK_CTRL

STK_LOAD

STK_VAL

STK_CALIB校验,此基本用不到,或者水平没到那个程度,暂时用不到

二.程序分析

Delay_us

void Delay_us(unsigned int nTime)
{
         SysTick->LOAD = 72*nTime;
         SysTick->CTRL =SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
         while(!(SysTick->CTRL&SysTick_CTRL_COUNTFLAG_Msk));
         SysTick->CTRL =~SysTick_CTRL_ENABLE_Msk;
}

直到为bit 161的时候完成us的延时,因为systick只是一个24bit的计数器,所以总有个最大延时,所以采用delay ms去实现更多的延时

void Delay_ms(unsigned int nTime)
{
	for(;nTime > 0;nTime--)
                   Delay_us(1000);
}

以上可以实现延时,测试有效

 

发布了200 篇原创文章 · 获赞 548 · 访问量 76万+

猜你喜欢

转载自blog.csdn.net/XiaoXiaoPengBo/article/details/77453953