在ESP32低功耗模式下,配置RTC唤醒源并保持GPIO状态,需分两步:1) 唤醒源配置:使用`esp_sleep_enable_timer_wakeup()`或`esp_sleep_enable_ext0_wakeup()`/`ext1_wakeup()`,并确保在`esp_light_sleep_start()`或`esp_deep_sleep_start()`前调用。对于RTC GPIO(如GPIO0-5),需通过`rtc_gpio_pullup_en()`/`pulldown_en()`设置上下拉,并调用`rtc_gpio_hold_en()`锁定状态。2) GPIO状态保持:在进入睡眠前,对需要保持的GPIO调用`gpio_hold_en()`,并确保其配置为RTC功能(如`rtc_gpio_init()`)。注意,深睡模式下普通GPIO会丢失状态,仅RTC域GPIO(0-5, 10-19)可保持。建议使用`esp_sleep_pd_config()`关闭不必要的电源域以降低功耗,但保留RTC域。实操中,先测试唤醒后GPIO状态,再优化功耗。
mcuku 阿沐 · 2026-08-27