在ESP32低功耗模式下,配置RTC外设唤醒并保持GPIO状态,需分两步:首先,使用`esp_sleep_enable_rtc_timer_wakeup()`或`esp_sleep_enable_ext0_wakeup()`等函数设置唤醒源,并调用`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)`确保RTC内存不掉电,以保留唤醒后的上下文。其次,对于GPIO状态保持,需将相关引脚配置为RTC GPIO(如GPIO0-5、10-19等),并调用`gpio_hold_en()`或`rtc_gpio_hold_en()`,在进入睡眠前使能保持功能,这样在深度睡眠期间引脚电平被锁存。注意,唤醒后需调用`gpio_hold_dis()`释放保持,否则引脚状态无法改变。实操建议:在`app_main`中先初始化GPIO,设置保持,再进入睡眠;唤醒后立即恢复GPIO配置。测试时用万用表验证电平,并确保电源域配置正确,避免意外复位。
mcuku 阿沐 · 2026-08-27