我正在爲嵌入式設備編寫代碼(沒有操作系統,所以沒有系統調用或任何東西),我需要有一個延遲,但編譯器不提供time.h
。我還有什麼其他選擇?實現延遲()沒有時間()
0
A
回答
0
取決於設備。你能啓用一個穩定的計時器中斷嗎?您可能只能等待並等待定時器中斷。這很可能是多麼準確(以及它需要多準確)還不清楚。
1
根據系統的時鐘,可以使用NOP(無操作)彙編程序指令來實現延遲。您可以根據您的系統的MIPS計算一個NOP的時間,因此,例如,如果1 NOP
爲1[us]
,那麼你可以實現類似:
void delay(int ms)
{
int i;
for (i = 0; i < ms*1000; i++)
{
asm(NOP);
}
}
0
對於較短的固定時間延遲,一個什麼都不做環將滿足需要,但當然需要校準。
void Delay_ms(unsigned d /* ms */) {
while (d-- > 0) {
unsigned i;
i = 2800; // Calibrate this value
// Recommend that the flowing while loop's asm code is check for tightness.
while (--i);
/* add multiple _nop_() here should you want precise calibration */
}
}
相關問題
- 1. updateTabsetPanel現在,沒有延遲
- 2. 沒有使用Thread.sleep()的時間延遲
- 3. 實現非阻塞定時操作 - 沒有延遲() - 對於Arduino
- 4. 處理環境 - 延遲時間延遲
- 5. Java時間延遲
- 6. Python時間延遲
- 7. JavaScript時間延遲
- 8. 時間延遲Tkinter
- 9. txpostgres:延遲實例沒有屬性'addCallBack'
- 10. 在C中有時間延遲#
- 11. 計時器在Android中沒有延遲
- 12. 實現具有大量BDH單元格引用的彭博時間延遲
- 13. Memcache延遲時間太長?
- 14. 安卓時間延遲
- 15. 使用SystemCurrentTimeMillis延遲時間
- 16. Node.js到Socket.io時間延遲
- 17. 計劃的時間延遲
- 18. VBScript中的時間延遲
- 19. 隨機時間延遲
- 20. Verilog時間延遲計算
- 21. 時間延遲的Android
- 22. jQuery的時間延遲
- 23. JBoss啓動時間延遲
- 24. Objective-C時間延遲
- 25. Simulink:擺脫時間延遲
- 26. AJAX(XMLHTTPRequest)時間延遲
- 27. C時間延遲豬CPU
- 28. 延遲經一定時間
- 29. EJB2中的時間延遲
- 30. 時間延遲,cocos2d的
許多嵌入式設備包括一個定時器或時鐘硬件設備,它可以被編程爲在一段時間後發送中斷。 – caf
你使用什麼編譯器? – chux
你可以使用'select'嗎?它有一個超時參數。 – ugoren