打印
[其他]

RTC 初始化与时钟源配置

[复制链接]
1462|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大鹏2365|  楼主 | 2025-5-31 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RTC 时钟源选择
MM32F3273 的 RTC 模块支持两个时钟源:

低速外部晶振:32.768 kHz,精度高,推荐用于时间保持。

低速内部 RC 振荡器:约 32 kHz,低功耗但精度差。

初始化流程示意(以 LSE 为例):
c
复制
编辑
RCC->APB1ENR |= RCC_APB1ENR_PWREN;        // 使能电源模块
PWR->CR |= PWR_CR_DBP;                    // 允许访问 RTC 和备份寄存器
RCC->BDCR |= RCC_BDCR_LSEON;              // 启动 LSE
while (!(RCC->BDCR & RCC_BDCR_LSERDY));   // 等待 LSE 稳定
RCC->BDCR |= RCC_BDCR_RTCSEL_LSE;         // 选择 LSE 为 RTC 时钟源
RCC->BDCR |= RCC_BDCR_RTCEN;              // 使能 RTC

// 初始化 RTC,设置时分秒、日历等
RTC->WPR = 0xCA; RTC->WPR = 0x53;         // 解锁写保护
RTC->ISR |= RTC_ISR_INIT;                 // 进入初始化模式
while (!(RTC->ISR & RTC_ISR_INITF));      // 等待进入 INIT 模式
// 设置预分频器、时间、日期...
RTC->ISR &= ~RTC_ISR_INIT;                // 退出初始化
RTC->WPR = 0xFF;                          // 恢复写保护

使用特权

评论回复
沙发
磨砂| | 2025-8-2 09:27 | 只看该作者
通过[size=0.875]RCC_APB1PeriphClockCmd()函数启用电源控制模块和备份接口的时钟

使用特权

评论回复
板凳
晓伍| | 2025-8-4 13:28 | 只看该作者
通常使用备份寄存器存储一个特定值,判断是否已完成初次配置

使用特权

评论回复
地板
八层楼| | 2025-8-4 15:58 | 只看该作者
推荐使用精度更高的LSE,因其在主电源断电时仍可由VBAT引脚供电维持运行

使用特权

评论回复
5
观海| | 2025-8-4 18:36 | 只看该作者
调用[size=0.875]RTC_WaitForSynchro()确保APB1接口与RTC核心时钟同步,避免读取错误数据

使用特权

评论回复
6
guanjiaer| | 2025-8-4 20:59 | 只看该作者
修改关键寄存器前需置位[size=0.875]RTC_CRL[size=0.875]CNF位进入配置模式,操作完成后清除该位以锁定设置

使用特权

评论回复
7
keaibukelian| | 2025-8-5 11:08 | 只看该作者
外部低速晶振典型频率为32.768kHz,精度高且稳定;独立于主系统时钟,即使主电源关闭仍可运行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

692

帖子

0

粉丝