在ESP32低功耗模式下,配置RTC唤醒源并保持GPIO状态,需区分深睡(Deep Sleep)和浅睡(Light Sleep)。对于深睡,RTC外设保持供电,但GPIO状态默认丢失,需通过`gpio_hold_en()`函数在进入睡眠前锁定GPIO电平,并在唤醒后调用`gpio_hold_dis()`释放。唤醒源配置:使用`esp_sleep_enable_timer_wakeup()`设置定时器,或`esp_sleep_enable_ext0_wakeup()`/`esp_sleep_enable_ext1_wakeup()`配置外部RTC GPIO唤醒,注意EXT1支持多个引脚。代码示例:`gpio_hold_en(GPIO_NUM_4); esp_sleep_enable_timer_wakeup(10*1000000); esp_deep_sleep_start();`。唤醒后,先`gpio_hold_dis()`再操作GPIO。浅睡模式下,CPU暂停但外设和GPIO状态保留,唤醒源配置类似,但需确保`esp_sleep_enable_gpio_wakeup()`或定时器。建议实测功耗和唤醒延迟,并检查RTC GPIO编号(如GPIO0-5, 12-15, 25-27, 32-39)。
mcuku 阿沐 · 2026-08-27