我正在用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/

10-11 21:23