在ESP32深度睡眠前,将关键状态(如WiFi连接参数、TCP会话ID、传感器校准值)序列化到RTC快速内存(RTC_DATA_ATTR)中。唤醒后,通过esp_sleep_get_wakeup_cause()确认唤醒源,再读取RTC内存恢复状态。注意:RTC内存仅保留在深度睡眠模式(非断电),且需启用CONFIG_ESP32_RTC_CLK_SRC和CONFIG_ESP32_RTC_EXT_CRYST_ADD_CURRENT_TO_1P8V(若使用外部晶振)。实操建议:用结构体封装状态,写入前校验CRC,唤醒后先验证版本号,避免数据损坏。WiFi恢复可调用esp_wifi_set_storage(WIFI_STORAGE_RAM)避免NAND磨损,并配合esp_wifi_connect()快速重连。若需更快的TCP恢复,可保存socket的fd和选项,但需注意内核版本兼容性。
mcuku 阿沐 · 2026-08-27