程式中延時的方法很多,如直接呼叫sleep函式
也可用for迴圈來實現乙個延時,例如:
int m=0;
for (int x=0;x<20000;x++)
}也可用下面這個函式
/*功能:帶windows訊息處理的毫秒界別延時
引數:ms:延遲時間(單位:毫秒)
*/bool ctools::delaymsmessage(const unsigned int ms)
nexttickms = pretickms;
//迴圈等待
while( (nexttickms - pretickms) <= ms )
//再次查詢時刻
if( ctools::gettickcountms(nexttickms) == false )
}return true;
}其中,
/*功能:獲取當前時刻(精度:毫秒)
引數:ms:當前時刻(單位:毫秒)
說明:由於計數器資料位可以達到64bit;
計數的時間可以達到1千萬天。
而其實也可以轉成用低32bit來計數;
計數的時間可以達到1000秒左右。
其實用低32bit就能滿足要求,常用的
定時不會超過1分鐘。
*/bool ctools::gettickcountms(unsigned int &ms)
//獲取時鐘計數器數值
if( !queryperformancecounter(&time) )
//將計數值轉換成微秒數
ftime = (float)time.lowpart;
ftime /=(float)freq.lowpart;
ftime *= 1000.0;
ms = (unsigned int)ftime;
return true;
}
利用DWT實現微秒級延時
dwt,全稱是the debug watchpoint and trace dwt unit,用於系統除錯及跟蹤,詳細的介紹可以參考arm官方文件 armv7 m architecture reference manual。本文將使它來實現乙個系統的延時功能。2.延時函式標頭檔案 ifndef dw...
for迴圈實現C語言精確延時
for迴圈實現c語言精確延時 晶振12mhz,乙個機器週期1us.一.500ms延時子程式 程式 void delay500ms void 產生的彙編 c 0x0800 7f0f mov r7,0x0f c 0x0802 7eca mov r6,0xca c 0x0804 7d51 mov r5,0...
MATLAB中如何用迴圈實現精確延時
前面在用matlab控制硬體的時候,在每次採集的過程中需要等一段固定的時間再採集訊號。所以這裡就會需要用到延時函式來精確延時,首先想到的就是函式pause time 但執行時發現錯誤,後來弄清楚了,pause的作用是暫停,而不是延時。在執行pause時,程式各個系統都暫停了,也要把我的採集硬體部分暫...