ESP32深度睡眠时RTC内存可保留数据,但唤醒后外设重初始化顺序是关键陷阱。核心原则:先恢复RTC数据(如校准值、状态标志),再初始化外设,因为外设驱动可能依赖这些数据。实操建议:1) 在唤醒入口(如esp_sleep_get_wakeup_cause)判断唤醒源,然后立即读取RTC慢速内存(RTC_DATA_ATTR变量),避免在初始化GPIO或SPI后访问,因部分外设时钟未恢复可能导致总线错误。2) 使用esp_wifi_stop或关闭蓝牙后再进深度睡眠,否则唤醒后WiFi/BT栈需重新初始化,且顺序应在RTC数据恢复之后。3) 注意RTC内存中指针无效,只能存值或使用偏移量。测试时用逻辑分析仪验证时序,避免因初始化顺序导致数据覆盖。
mcuku 阿沐 · 2026-08-27