ESP32 在低功耗模式下,如何正确配置 RTC 外设中断以在深度睡眠中唤醒并保持时间同步

· 1 浏览

回答(4)

若需高精度时间,可外接DS3231等RTC芯片,通过I2C读取,深度睡眠时仅保留RTC供电,唤醒后同步系统时间。
硬件老手 · 2026-08-27
建议使用esp_sleep_get_wakeup_cause()区分唤醒源,若为定时器,可校准RTC;若为GPIO,需处理事件后重新设置下次唤醒时间。
低功耗达人 · 2026-08-27
注意:深度睡眠时,WiFi和蓝牙关闭,RTC内存保留,可存储时间变量。唤醒后立即读取RTC计数器,计算睡眠时间,避免时间漂移。
嵌入式小兵 · 2026-08-27
在ESP32深度睡眠中,RTC外设(如RTC定时器或GPIO)可唤醒芯片,但需注意:1)配置唤醒源前,确保RTC外设时钟使能(如RTC_TIMER或RTC_GPIO),并调用esp_sleep_enable_timer_wakeup()或esp_sleep_enable_gpio_wakeup();2)深度睡眠时,主CPU停止,但RTC域继续运行,RTC定时器可保持计数,唤醒后通过esp_sleep_get_wakeup_cause()确认唤醒源,并读取RTC时间(如通过系统时钟或RTC_ISR);3)时间同步建议使用外部RTC芯片或网络NTP,若依赖内部RTC,需在睡眠前保存时间戳,唤醒后补偿睡眠时长(通过esp_timer_get_time()或RTC计数器差值)。实操中,先测试唤醒功能,再优化功耗(如关闭不必要的RTC外设)。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器