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

一.SysTick寄存器介绍

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

【stm32f103】SysTick实现延时(寄存器版)_第1张图片

分别为STK_CTRL

【stm32f103】SysTick实现延时(寄存器版)_第2张图片

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;
}

【stm32f103】SysTick实现延时(寄存器版)_第3张图片

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

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

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

 

你可能感兴趣的:(stm32应用)