c - 如何在 c 中创建我自己的 sleep 或延迟函数

标签 c operating-system timedelay

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

相关文章:

java - 在Java中,有一个集合,我只能在一段时间后才能获取元素?

c - MAC 地址的网络字节顺序

c - 重用字符指针数组

c - 堆栈内存有限制吗?

Android 应用程序不是从快捷方式启动

PHP sleep 延迟

javascript - setTimeout 在 react setState 中

c - "Undefined symbol <function> first referenced in file <file>"链接错误

c - 在 Mac OS high sierra 上安装 GCC

linux - PCB存放在内存中的什么位置