ESP32 (Arduino Core): "while(true)" 设置函数循环

ESP32 (Arduino Core): "while(true)" loop in setup function

实际上只是一个简短的问题,但我找不到任何相关信息:不使用 Arduinos loop 函数是否可以,而是在 [=13] 中执行一个 while(true) 循环=]函数?

我问是因为我喜欢 class 处理 WiFi 配置。它从首选项中读取 WiFi 连接数据,如果它无法连接(由于缺少首选项或因为配置的 AP 不可访问),它应该打开一个接入点,等待配置(通过网络服务器)然后重新启动。

但是当必须配置 WiFi 连接时,我不希望执行指针到达实际的 loop。实际的loop只是为了正常运行。因此,我在该 WiFi 配置 class 中创建了 while(true) 循环。它似乎有效,但我是否应该注意任何后果?或者基本上可以这样做吗?

注意:我确实在 while(true) 循环中使用 delay() 调用(或 yield() 调用)。

谢谢!

你的代码。你想做什么,就可以做什么。在 setup() 中等待连接是绝对可以的,也是很常见的做法。

正如您在 Arduino 的 main() 实现中所见:https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/main.cpp

int main(void)
{
    init();

    initVariant();

#if defined(USBCON)
    USBDevice.attach();
#endif

    setup();

    for (;;) {
        loop();
        if (serialEventRun) serialEventRun();
    }

    return 0;
}

唯一要考虑的是不能使用SerialEvent

https://www.arduino.cc/en/Tutorial/SerialEvent

SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs