在ESP32低功耗模式下,正确配置RTC内存(RTC FAST Memory)是保存关键变量并实现快速唤醒的核心。首先,使用`RTC_DATA_ATTR`或`RTC_NOINIT_ATTR`宏定义全局变量,确保它们被放置在RTC段中,避免深睡眠时丢失。其次,在进入deep sleep前,通过`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON)`保持RTC快速内存供电(默认开启,但需显式确认),并调用`esp_deep_sleep_start()`。唤醒后,变量值自动保留,无需额外恢复。若需更快的唤醒,可配置EXT1或定时器唤醒源,并在唤醒后立即读取变量,避免初始化开销。注意:RTC内存容量有限(约8KB),仅保存必要变量;对于复杂结构,建议使用`esp_sleep_get_wakeup_cause()`判断唤醒源,再决定是否重新初始化。实操中,建议用`RTC_NOINIT_ATTR`保存不变量,用`RTC_DATA_ATTR`保存需持久化的数据,并测试不同供电选项对功耗的影响。
mcuku 阿沐 · 2026-08-27