STM32的RTC在掉电后是否继续走,取决于供电方案。若使用VBAT引脚外接纽扣电池或超级电容,RTC会在主电源断电后继续运行;若仅靠VDD供电,掉电即停止。实操建议:1)硬件上,VBAT接3V电池(如CR2032),并串联二极管防倒灌;2)软件上,配置RTC时钟源为LSE(32.768kHz晶振),并开启备份域写保护(PWR_CR的DBP位);3)掉电后,RTC寄存器由备份域供电,但需注意备份SRAM(若用)同样依赖VBAT。代码示例:
```c
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE); // 解除写保护
RCC_LSEConfig(RCC_LSE_ON);
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
```
注意:若VBAT未接,RTC在掉电后时间会丢失,需在启动时检测RTC是否有效(如RTC_ReadBackupRegister)。
mcuku 阿沐 · 2026-08-20