没有语句的无限循环

infinite While loop without statement

这是什么意思?我在嵌入式 c program.I 中看到了下面的部分代码,知道这是一个无限循环,但是这部分代码在嵌入式 c 中的用途是什么。

while(1)
{       
}

谢谢..

这个结构有两个不同的用途。

  1. 当您检测到错误情况或任务终止时,您必须将微控制器置于确定状态。 while(1) { } 构造停止进一步执行,直到(看门狗)重置重新启动微控制器。
    正如 krambo 在他的评论中提到的,这可以用来附加一个JTAG 调试器检查微控制器、变量、寄存器等的状态。
  2. 您可以在中断处理程序中实现所有逻辑。 main 函数执行初始化并进入休眠状态。虽然主要功能可以 "sleep" 而 CPU 不能。它只是永远循环。一些微控制器支持低能量模式。这将是一个替代方案。

所有嵌入式系统都需要一个死循环,因为只要电源打开它们就必须继续执行。嵌入式程序只是执行然后 return 没有任何意义,因为这会使处理器死机和空闲。这可能是该循环的唯一目的。

我猜你的代码来自裸机微控制器应用程序,所以你可以安全地忽略所有 PC 程序员关于休眠和多线程的评论;对于微控制器应用程序,不消耗 100% 的 CPU 没有任何意义,因为除了您之外没有其他人在使用它。

如果你在嵌入式系统上休眠,你会让实际的微控制器硬件休眠,如果它支持的话。您这样做是为了省电,而不是为了节省 CPU 周期。

某些操作系统,例如 uC/OS,需要一个空闲任务来 运行,而没有其他任务 运行 正在执行。这将是最低优先级,并且如果它有机会 运行 将被计时器(调度程序)滴答抢占。你描述的情况可能就是这样的任务。