本帖最后由 zhonggx 于 2014-9-27 08:22 编辑
/********************************************************************************************************************
** 函数名称: void DelayUs(INT32U dwTime) Name: Ivoid DelayUs(INT32U dwTime)
** 功能描述: 微秒级延时函数 Function: Delay time in us's
** 输 入: INT32U dwTime: 延时时间 Input: INT32U dwTime: Delay times
** 输 出: Output:
********************************************************************************************************************/
void DelayUs(INT32U dwTime)
{
INT32U dwCurCounter=0; //当前时间计数值
INT32U dwPreTickVal=SysTick->VAL; //上一次SYSTICK计数值
INT32U dwCurTickVal; //上一次SYSTICK计数值
dwTime=dwTime*(RCC_Clocks.HCLK_Frequency/1000000); //需延时时间,共多少时间节拍
for(;;){
dwCurTickVal=SysTick->VAL;
if(dwCurTickVal<dwPreTickVal){
dwCurCounter=dwCurCounter+dwPreTickVal-dwCurTickVal;
}
else{
dwCurCounter=dwCurCounter+dwPreTickVal+SysTick->LOAD-dwCurTickVal;
}
dwPreTickVal=dwCurTickVal;
if(dwCurCounter>=dwTime){
return;
}
}
}
|