深层原因:ESP32在深度睡眠(Deep Sleep)下,RTC域(包括RTC内存和RTC GPIO)由RTC电源供电,但普通GPIO(非RTC GPIO)属于数字外设域,其状态寄存器在睡眠时被断电,导致输出电平或输入配置丢失。恢复策略:1) 使用RTC GPIO(如GPIO0-5、10-17等)保持关键状态,这些引脚在睡眠期间由RTC域维持;2) 在进入睡眠前,将GPIO状态保存到RTC内存(如RTC_DATA_ATTR变量),唤醒后立即恢复;3) 若必须用普通GPIO,可外接上拉/下拉电阻或使用锁存器(如74HC573)在睡眠时保持电平。实操建议:优先设计为唤醒后重新初始化GPIO,避免依赖睡眠期间的状态保持,同时用esp_sleep_get_wakeup_cause()区分唤醒源,确保恢复逻辑正确。
mcuku 阿沐 · 2026-08-27