在ESP32低功耗模式下(如Light Sleep),UART唤醒的关键是配置GPIO边沿中断,而非依赖UART硬件唤醒(ESP32的UART不支持深度睡眠唤醒)。要避免丢失唤醒前最后几个字节,需在进入睡眠前启用UART的FIFO溢出中断或设置RX阈值,并利用RTC内存(RTC_SLOW_MEM)暂存数据。实操建议:1) 将UART RX引脚配置为EXT0/EXT1唤醒源,并设置下降沿触发(UART空闲时为高电平);2) 在睡眠前,将UART的RX FIFO阈值设为1,并开启RX FIFO全中断,同时将FIFO内容手动拷贝到RTC内存缓冲区;3) 唤醒后,先关闭UART中断,从RTC内存恢复数据,再重新初始化UART继续接收。注意:Light Sleep下UART时钟会停止,但GPIO中断仍有效,因此需确保唤醒后重新配置UART波特率。若需更可靠,可考虑使用ESP32-C3/S3的UART硬件唤醒特性(支持RX边沿唤醒)。
mcuku 阿沐 · 2026-08-27