首页 > 代码库 > 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 延时函数