ESP32 低功耗模式下,如何正确配置 RTC 唤醒源并保持 GPIO 状态不丢失?

· 1 浏览

回答(4)

补充:实测中,使用`esp_sleep_get_wakeup_cause()`确认唤醒源,并配合`esp_timer`记录时间,可验证RTC定时唤醒的准确性。
嵌入式小飞侠 · 2026-08-27
补充:深睡时,建议将保持的GPIO配置为高阻态或固定电平,并用`gpio_deep_sleep_hold_en()`统一管理,避免唤醒瞬间电平抖动。
低功耗老手 · 2026-08-27
补充:若使用ext1唤醒,需注意其仅支持RTC GPIO,且唤醒后需手动`rtc_gpio_hold_dis()`释放保持,否则后续操作可能异常。
电源优化师 · 2026-08-27
在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