什么是嵌入式C编程语言中的“超级循环”?
嵌入式C编程语言中的Super Loop是什么?
这指的是通常位于“裸机”系统(无OS)的main()
中的永久循环,因为这样的系统永远不会从主系统返回。 典型的裸机嵌入式系统如下所示:
void main (void) { // various initializations for(;;) // "super loop" or "main loop" { // do stuff } }
MCU是连续或更好运行的设备,它在通电时执行指令(通常)。
因此,虽然循环在这里迫使MCU做某事,即使循环为空,它也只是绕圈。
但它必须做一些事情,因为它与在主函数结束时return
PC程序不同。
如果您没有超级循环,那么MCU可以从FLASH / RAM(无论是……)获取指令并做一些愚蠢的事情,因为MCU不知道它正在执行什么。 它只是执行你提供给他的代码。
通过使用超级循环,您可以保证MCU不会无法控制执行某些指令,也可能会进入故障安全区域。 当然,即使你有超级循环也会发生这种情况,但这是其他主题。
int main() { //Init if you have something while (1) { //DO stuff always } return 0; //This should never happen! }
超级循环是一个无限循环,它只适用于嵌入式c编程,因为你必须运行你的代码非常长时间,并希望在你的机器人或其他什么行为发生变化时明确终止。 Superloop就像
while(1){ // Your code // exit condition } for(;;) { }