利用for迴圈實現程式的延時

2021-06-21 05:01:11 字數 935 閱讀 8998

程式中延時的方法很多,如直接呼叫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時,程式各個系統都暫停了,也要把我的採集硬體部分暫...