使用系统时钟既做定时中断又做延时处理
1.先初始化SysTick系统定时中断
查看对应例程
2.写延时函数
根据初始化时钟查看每us系统振动多少下
void delay_us(uint32_t nus)
{
u32 ticks;
u32 told,tnow,tcnt=0;
u32 reload=SysTick->LOAD; //LOAD值
ticks=nus*180; //n微妙需要振动多少下
told=SysTick->VAL; //定时中断当前计数值
while(1)
{
tnow=SysTick->VAL;
if(tnow!=told)
{
if(tnow<told)tcnt+=told-tnow;
else tcnt+=reload-tnow+told;
told=tnow;
if(tcnt>=ticks)break; //
}
};
}