首页 > 代码库 > SysTick 延时函数

SysTick 延时函数

用SYSTICK(系统滴答定时器)做延时函数

1.   4个寄存器

   SysTick->CTRL,        --控制和状态寄存器

    SysTick->LOAD,        --重装载寄存器

    SysTick->VAL,          --当前值寄存器

    SysTick->CALIB,        --校准值寄存器    

下图有他们的分别描述:     下图引用地址:http://blog.csdn.net/marike1314/article/details/5673684

技术分享

技术分享

技术分享

技术分享

2.systick编程

设置时钟源(一种是直接等于HCLK时钟,一种是HCLK/8)

 内核时钟      SysTick->CTRL |= SysTick_CLKSource_HCLK;         //0x00000004

外部时钟源    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;//0xFFFFFFFB

 

如果HCLK时钟为8M

void delay_1us(u16 value)
{
//设置SYSTICK 时钟源 HCLK=8M

SysTick->LOAD=value*8; //时间加载 时间为8M 8次为1us

SysTick->VAL=0x00; //清空计数器
SysTick->CTRL=0x00000005; //设置时钟源为HCLK(8M)并开始倒数0x00000004|0x01
while(!(SysTick->CTRL&(1<<16))); //等待时间到达 SysTick->CTRL的COUNTFLAG为为1时时间到达  (while表达式为1会一直循环,为0时跳出循环)
SysTick->CTRL=0x00000004; //关闭计数器
}

SysTick 延时函数