ESP32低功耗模式(如Deep-sleep)下,RTC内存(RTC_SLOW_MEM)是唯一在深度睡眠中保持数据的存储区,用于保存唤醒后恢复上下文。边界条件包括:1)RTC内存容量有限(约8KB),需谨慎分配,超出会导致存储失败;2)外设状态(如GPIO、UART)在Deep-sleep中默认断电,仅RTC域外设(如RTC_GPIO、ULP协处理器)可保持;3)唤醒源(如定时器、触摸)必须在进入睡眠前配置,且唤醒后需重新初始化非RTC外设。实操建议:使用esp_sleep_get_wakeup_cause()判断唤醒源,将关键变量存入RTC内存(通过RTC_DATA_ATTR或esp_sleep_pd_config),并利用esp_deep_sleep_start()前调用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)确保内存供电。注意:若启用Flash掉电(ESP_PD_DOMAIN_MAX),RTC内存仍可用,但需避免依赖Flash中的静态数据。
mcuku 阿沐 · 2026-08-27