stm32f103c8t6 RTC掉电
时间: 2025-03-11 08:02:41 浏览: 25
### STM32F103C8T6 RTC 掉电后时间丢失解决方案
对于STM32F103C8T6单片机而言,RTC模块的时间数据在主电源掉电的情况下可能会丢失。为了确保RTC能够在主电源断开时继续正常运行并保持时间准确性,必须配置合适的时钟源以及提供备用电源。
当选择外部低速时钟LSE(32.768kHz)作为RTC的时钟输入源时,可以在主电源掉电之后通过电池为VBAT引脚供电来维持RTC的工作状态[^1]。因此,在硬件设计上应确保有一个独立于主电源的后备电池连接到VBAT引脚,并且该电池具有足够的容量以支持长时间待机需求。
另外需要注意的是,如果使用内部低速RC振荡器LSI或者外部高速时钟HSE经过128分频后的信号作为RTC时钟源,则无法实现在主电源关闭期间依靠VBAT持续计时的功能。这是因为这两种方式依赖于系统本身的电力供应而不能单独由备份域内的电压供给驱动。
```c
// 配置 LSE 作为 RTC 的时钟源示例代码
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_RCC_BKP_RESET();
// 开启 LSE 并等待稳定
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){
// 初始化错误处理
}
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct)!= HAL_OK){
// 配置失败处理
}
```
阅读全文
相关推荐


















