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