RTC_ERR_ALARM_MISSED
embedded
runtime_error
ai_generated
true
RTC:闹钟中断丢失,VBAT低电压标志已置位
RTC: Alarm interrupt missed, VBAT low flag set
ID: embedded/rtc-alarm-missed-due-to-battery-loss
90%修复率
82%置信度
1证据数
2023-11-20首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| STM32L4 RTC driver v1.3.0 | active | — | — | — |
| HAL RTC v1.2.5 | active | — | — | — |
根因分析
备份电池电压降至阈值以下,导致RTC寄存器复位,闹钟丢失。
English
The backup battery (VBAT) voltage dropped below the threshold, causing the RTC registers to reset and the alarm to be missed.
官方文档
https://www.st.com/resource/en/application_note/an4759-rtc-usage-with-stm32l4-series-stmicroelectronics.pdf解决方案
-
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'); }`
无效尝试
常见但无效的做法:
-
85% 失败
If VBAT is low, the RTC registers will reset again after the next power loss, and the alarm will be missed repeatedly.
-
90% 失败
Disabling the flag only hides the symptom; the RTC data integrity is still compromised and alarms will fail silently.