我正在用 C 创建一个小内核,我需要一个函数,该函数将采用一个参数,其中包含它应该等待的秒数。
我试过使用 for 循环,但没有用。
我不能使用 C 标准库,需要一种方法告诉内核等待(在 C 中)。我该怎么做?
循环:
int c = 1, d = 1;
for ( c = 1 ; c <= 32767 ; c++ )
for ( d = 1 ; d <= 32767 ; d++ ){}
最佳答案
使用循环是可行的,但它所花费的时间在很大程度上取决于您的 CPU 速度和任何编译器优化。当您知道目标硬件时(例如,为特定的微 Controller 编写),它很有用。
您应该在循环体中包含一个 NOP。还要检查您的编译器是否支持 #pragma 或特殊注释以禁用对特定代码块的优化。
检查您的编译器文档以了解 NOP 的定义。大多数编译器定义一个名为 _nop()
或 _nop_()
你可以定义你自己的使用:
#define Nop() {_asm nop _endasm}
或者如果您的编译器支持内联汇编,则可以编写 asm("nop")
。
关于c - 如何在 c 中创建我自己的 sleep 或延迟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683701/