stm32 rtc时钟
时间: 2025-05-01 08:35:38 浏览: 15
### STM32 RTC时钟配置教程
STM32 的实时时间 (RTC) 功能允许设备在低功耗模式下保持精确的时间记录。以下是关于如何配置和使用 STM32 RTC 时钟的相关信息。
#### 配置步骤概述
通过 STM32CubeMX 工具可以简化 RTC 的初始化过程。首先,在 CubeMX 中启用 RTC 外设并选择合适的时钟源,通常可以选择 LSI、LSE 或 HSE 作为 RTC 的时钟输入[^2]。如果硬件设计不允许使用外部晶振(如 LSE),则可以选择内部 RC 振荡器(LSI)或者分频后的高速外设时钟(HSE)。需要注意的是,当采用 HSE 作为 RTC 输入时钟时,可能需要额外考虑其频率分频设置以满足 RTC 对较低工作频率的需求。
#### 软件实现部分
下面展示了一个简单的代码片段用于初始化以及操作 RTC:
```c
// 初始化 RTC 结构体变量
RTC_HandleTypeDef hrtc;
void MX_RTC_Init(void){
__HAL_RCC_BACKUPCLK_ENABLE(); // 开启备份区域访问权限
hrtc.Instance = RTC;
hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
if(HAL_RTC_Init(&hrtc)!= HAL_OK){ /* 错误处理 */ }
}
uint8_t SetTime(uint32_t hour,uint32_t minute,uint32_t second){
RTC_TimeTypeDef sTime ={0};
sTime.Hours=hour;sTime.Minutes=minute;sTime.Seconds=second;
return HAL_RTC_SetTime(&hrtc,&sTime,RTC_FORMAT_BIN);
}
```
上述代码展示了基本的 RTC 初始函数定义及其设定当前时间的方法。其中 `SetTime` 函数接受小时数、分钟数及秒数值来更新 RTC 时间寄存器中的数据。
#### 常见问题解答
对于某些开发板而言,由于缺乏备用电源支持,在断电情况下无法维持正常运行状态下的计时功能。对此可以通过保存最后时刻的状态至非易失性存储空间内,并于重新上电启动阶段恢复这些参数值的方式间接达成近似效果。
另外值得注意的一点是,假如项目里已经占用了 PC 引脚资源,则不宜再尝试引入 LSE 类型的独立震荡电路以免引发管脚分配矛盾;此时改选其他可用选项比如 HSE 就成为合理的选择方向之一。
---
阅读全文
相关推荐


















