RTC_ERR_ALARM_MISSED
embedded
runtime_error
ai_generated
true
RTC: Alarm interrupt missed, VBAT low flag set
ID: embedded/rtc-alarm-missed-due-to-battery-loss
90%Fix Rate
82%Confidence
1Evidence
2023-11-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| STM32L4 RTC driver v1.3.0 | active | — | — | — |
| HAL RTC v1.2.5 | active | — | — | — |
Root Cause
The backup battery (VBAT) voltage dropped below the threshold, causing the RTC registers to reset and the alarm to be missed.
generic中文
备份电池电压降至阈值以下,导致RTC寄存器复位,闹钟丢失。
Official Documentation
https://www.st.com/resource/en/application_note/an4759-rtc-usage-with-stm32l4-series-stmicroelectronics.pdfWorkarounds
-
95% success Replace the backup battery and reinitialize the RTC with the correct time and alarm: `rtc_init(); rtc_set_time(&correct_time); rtc_set_alarm(&alarm_time);`
Replace the backup battery and reinitialize the RTC with the correct time and alarm: `rtc_init(); rtc_set_time(&correct_time); rtc_set_alarm(&alarm_time);`
-
80% success Add a VBAT monitoring routine to warn the user before the battery is critically low: `if (rtc_check_vbat_low()) { log_warning('VBAT low, replace battery'); }`
Add a VBAT monitoring routine to warn the user before the battery is critically low: `if (rtc_check_vbat_low()) { log_warning('VBAT low, replace battery'); }`
中文步骤
Replace the backup battery and reinitialize the RTC with the correct time and alarm: `rtc_init(); rtc_set_time(&correct_time); rtc_set_alarm(&alarm_time);`
Add a VBAT monitoring routine to warn the user before the battery is critically low: `if (rtc_check_vbat_low()) { log_warning('VBAT low, replace battery'); }`
Dead Ends
Common approaches that don't work:
-
85% fail
If VBAT is low, the RTC registers will reset again after the next power loss, and the alarm will be missed repeatedly.
-
90% fail
Disabling the flag only hides the symptom; the RTC data integrity is still compromised and alarms will fail silently.