我在C中创建一个小内核,我需要一个函数来获取一个参数,该参数包含它应该等待的秒数。
我尝试过使用for循环,但它们没有用。
我无法使用C标准库,需要一种方法告诉内核等待(在C中)。我怎么能这样做?
循环:
int c = 1, d = 1;
for ( c = 1 ; c <= 32767 ; c++ )
for ( d = 1 ; d <= 32767 ; d++ ){}
答案 0 :(得分:2)
使用循环有效,但所花费的时间将高度依赖于CPU的速度和任何编译器优化。当您了解目标硬件(例如,为特定微控制器写入)时,它非常有用。
你应该在循环体中包含一个NOP。还要检查您的编译器是否支持#pragma或特殊注释以禁用特定代码块的优化。
检查编译器文档以获取NOP的定义。大多数编译器定义了一个名为_nop()
或_nop_()
您可以使用以下方式定义自己的:
#define Nop() {_asm nop _endasm}
或者如果您的编译器支持内联汇编,则编写asm("nop")
。