打印
[其他ST产品]

在 STM32 微控制器上使用外部 25 MHz 晶振来配置 RTC

[复制链接]
242|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvuu|  楼主 | 2024-7-30 23:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 STM32 微控制器上使用外部 25 MHz 晶振来配置 RTC 时,需要确保时钟配置和初始化步骤正确。

RTC 初始化可能会失败的原因主要有以下几个方面:HSE 时钟未正确配置、RTC 时钟源配置不正确或者初始化顺序存在问题。

以下是一些需要注意的点以及改进后的代码:

1. HSE 时钟配置
确保 HSE 时钟已稳定并且准备好使用。可以在进入 RTC 配置之前确认 HSE 时钟已经启动并稳定。

2. RTC 时钟源选择
确保正确选择 HSE 时钟作为 RTC 的时钟源,并且正确配置分频系数。

3. 等待 RTC 同步
RTC_WaitForSynchro 函数会等待 RTC 同步标志 RSF 置位。确保在 RTC 时钟源启用后,等待足够的时间让 RTC 同步完成。

4. 进入 RTC 初始化模式
确保 RTC 能正确进入初始化模式。

使用特权

评论回复
沙发
lvuu|  楼主 | 2024-7-30 23:59 | 只看该作者
#include "stm32f4xx.h" // 根据你的芯片型号选择正确的头文件

void Error_Handler(void);

void CRTC_Config(void)
{
    RTC_InitTypeDef RTC_InitStructure;

    // 允许访问备份寄存器
    PWR_BackupAccessCmd(ENABLE);

    // 启用外部高速时钟 (HSE)
    RCC_HSEConfig(RCC_HSE_ON);
    // 等待 HSE 启动完成
    if (RCC_WaitForHSEStartUp() == ERROR) {
        Error_Handler(); // 错误处理
    }

    // 配置 RTC 时钟源为 HSE 分频 25
    RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div25);
    // 启用 RTC 时钟
    RCC_RTCCLKCmd(ENABLE);

    // 等待 RTC 同步
    if (RTC_WaitForSynchro() == ERROR) {
        Error_Handler(); // 错误处理
    }

    // 进入初始化模式
    RTC_EnterInitMode();

    // 配置 RTC 的分频器和小时格式
    RTC_InitStructure.RTC_AsynchPrediv = 124;  // (25MHz / 25) / 125 - 1
    RTC_InitStructure.RTC_SynchPrediv = 7999;  // 1MHz / 8000 - 1 = 1Hz
    RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
   
    if (RTC_Init(&RTC_InitStructure) == ERROR) {
        printf("\n\r/!\\***** RTC Prescaler Config failed ********/!\\ \n\r");
        Error_Handler(); // 错误处理
    }

    // 退出初始化模式
    RTC_ExitInitMode();

    // 设置初始时间
    RTC_TimeRegulate();
}

void Error_Handler(void) {
    // 错误处理代码,例如闪烁 LED 或者打印错误信息
    while(1);
}

使用特权

评论回复
板凳
lvuu|  楼主 | 2024-7-30 23:59 | 只看该作者
关键检查点
HSE 时钟启动检查:确保 HSE 时钟已经启动并稳定。
RTC 同步等待:RTC_WaitForSynchro 函数需要正确等待 RTC 的同步完成。
进入 RTC 初始化模式:确保 RTC_EnterInitMode 函数成功进入 RTC 初始化模式。
分频系数配置:确保分频系数正确配置,以便生成正确的 RTC 时钟。
调试和验证
时钟检查:使用示波器或调试工具检查 HSE

使用特权

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

本版积分规则

50

主题

450

帖子

0

粉丝