在ESP32低功耗模式下(如Deep-sleep),RTC外设(RTC_GPIO、RTC_TIMER)是保持定时唤醒和GPIO状态的关键。首先,启用RTC定时器唤醒:调用esp_sleep_enable_timer_wakeup(time_us)设置唤醒周期,并在进入睡眠前确保RTC时钟源(如外部32.768kHz晶振)已配置,以提高定时精度。其次,对于GPIO状态保持,需将相关引脚配置为RTC功能:使用rtc_gpio_hold_en()或gpio_hold_en()锁定电平,并在唤醒后调用rtc_gpio_hold_dis()释放。注意,仅RTC域引脚(如GPIO0-5、10-17、25-27、32-39)支持保持,普通GPIO在Deep-sleep下会丢失状态。实操建议:在进入睡眠前,先初始化RTC外设(rtc_gpio_init),设置引脚为输入/输出模式,再调用hold函数;同时,用esp_sleep_get_wakeup_cause()判断唤醒源,避免误触发。若需保留更多外设(如UART),可考虑Light-sleep模式,但功耗更高。
mcuku 阿沐 · 2026-08-27