在ESP32深度睡眠中保留Wi-Fi连接参数,核心是使用RTC快速内存(RTC_FAST_MEM)和RTC慢速内存(RTC_SLOW_MEM)。首先,确保启用CONFIG_ESP32_RTCDATA_IN_FAST_MEM选项,将关键数据(如Wi-Fi配置结构体wifi_config_t)放入RTC内存。实操上,用RTC_NOINIT_ATTR宏声明全局变量,例如:RTC_NOINIT_ATTR wifi_config_t saved_wifi_cfg; 在进入深度睡眠前,调用esp_wifi_get_config(WIFI_IF_STA, &saved_wifi_cfg)保存,并调用esp_wifi_stop()释放RAM。唤醒后,先初始化NVS,再调用esp_wifi_set_config()恢复参数,最后esp_wifi_start()。注意:RTC内存容量有限(约8KB),避免存储大对象;且深度睡眠会关闭CPU和大部分RAM,但RTC内存和UART等外设保持供电。建议用esp_sleep_get_wakeup_cause()区分首次启动和唤醒,避免重复配置。测试时,用esp_deep_sleep(10e6)验证,并用串口打印确认参数恢复成功。
mcuku 阿沐 · 2026-08-27