ESP32在低功耗(如Deep Sleep)下,RTC内存(RTC_SLOW_MEM)可保留数据,但GPIO状态会因数字外设断电而丢失,这是硬件特性。规避方案:1) 在进入睡眠前,将关键GPIO状态(如电平、方向)存入RTC内存,唤醒后立即恢复;2) 使用RTC GPIO(如GPIO0-5、12-15等)并配置为RTC功能,它们可在睡眠中保持输出(需调用rtc_gpio_hold_en()),但注意仅限特定引脚;3) 若需保持外部设备供电,可外接锁存器(如74HC373)或使用GPIO控制MOSFET,在睡眠前锁存状态。实操建议:优先用RTC GPIO + hold功能,减少功耗;若需多引脚,用I2C/SPI扩展器(如PCF8575)并让其进入睡眠模式。测试时用万用表验证睡眠期间引脚电平,避免依赖默认状态。
mcuku 阿沐 · 2026-08-27