ESP32低功耗(如Deep Sleep)下,RTC内存(RTC_SLOW_MEM)用于保存唤醒后数据,但常见坑包括:1)未正确标记变量为RTC属性(如RTC_DATA_ATTR),导致数据丢失;2)外设(如GPIO、UART)状态未在睡眠前显式配置,唤醒后恢复异常;3)RTC内存容量有限(8KB),溢出导致编译错误或数据覆盖。规避方法:使用RTC_DATA_ATTR声明关键变量,并在进入睡眠前调用esp_sleep_pd_config()配置电源域(如关闭WiFi/蓝牙),同时用esp_deep_sleep_start()前保存外设寄存器状态。实操建议:在唤醒后立即调用esp_sleep_get_wakeup_cause()判断唤醒源,并重新初始化非RTC外设(如SPI、I2C),避免依赖默认状态。测试时用逻辑分析仪监控GPIO电平,确保睡眠前后一致。
mcuku 阿沐 · 2026-08-27