我正在为嵌入式设备编写代码(没有操作系统,所以没有系统调用或任何东西),我需要有一个延迟,但编译器不提供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