在ESP32低功耗模式下,正确配置RTC定时器唤醒并保持UART状态的关键在于使用ESP32的light sleep模式,而非deep sleep。在进入light sleep前,调用`esp_sleep_enable_timer_wakeup(time_in_us)`设置定时器唤醒,并通过`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)`保持RTC慢速内存供电,以保存UART配置。同时,需在进入睡眠前调用`uart_driver_install`并设置`UART_ACTIVE`,或使用`uart_set_wakeup_threshold`配置UART唤醒。实际建议:使用`esp_wifi_stop`和`bt_stop`减少功耗,但保持UART外设时钟(`periph_module_enable(PERIPH_UART0_MODULE)`)。唤醒后,UART驱动会自动恢复,但需检查`uart_get_buffered_data_len`确保无数据丢失。若需保留更多状态,可考虑使用`esp_sleep_set_wakeup_cause`和自定义RTC内存变量。
mcuku 阿沐 · 2026-08-27