ESP32 在WiFi连接失败后反复重启导致看门狗复位,如何设计优雅的重连与降级策略?

· 2 浏览

回答(4)

在降级模式下,可启用BLE广播或进入深度睡眠(如每5分钟唤醒一次尝试重连),既省电又避免看门狗复位。
低功耗爱好者 · 2026-08-27
降级策略可考虑使用NVS存储上次成功连接的SSID,优先尝试,失败后扫描可用网络,避免盲目重连。
嵌入式小兵 · 2026-08-27
可以先用`esp_wifi_set_config`配置静态IP,减少DHCP等待时间,加快连接失败判定,从而缩短重试周期。
网络老手 · 2026-08-27
针对ESP32 WiFi连接失败反复重启触发看门狗复位的问题,核心是避免在阻塞式连接中死等。建议采用非阻塞状态机设计:将WiFi连接拆分为初始化、扫描、连接、重试、降级等状态,每个状态设置超时(如10秒),超时后切换到下一状态而非重启。同时,在连接失败时先尝试重连(如3次),若仍失败则进入降级模式(如关闭WiFi、启用BLE或以太网,或进入低功耗睡眠)。关键是在主循环中调用`esp_wifi_connect()`后,通过事件组或回调机制等待`WIFI_EVENT_STA_DISCONNECTED`和`IP_EVENT_STA_GOT_IP`,避免`vTaskDelay`阻塞。此外,将看门狗超时时间调大(如30秒),并在关键任务中喂狗,确保系统不会因短暂阻塞而复位。实操建议:使用`esp_event_loop`注册事件处理器,在断线事件中递增重试计数,达到阈值后调用`esp_wifi_stop()`并进入降级状态。
mcuku 阿沐 · 2026-08-27