[STM32F3] 在开始使用STM32的RTC模块之前,确实需要进行RTC时钟的初始化。

[复制链接]
880|3
 楼主| sj8zw8 发表于 2024-5-31 02:48 | 显示全部楼层 |阅读模式
以下是一个简单的示例代码,展示了如何在STM32上初始化RTC时钟:

c

#include "stm32l0xx.h"

void RTC_Init(void) {
    // 启用PWR时钟
    RCC->APB1ENR |= RCC_APB1ENR_PWREN;
    // 解锁RTC和后备寄存器访问
    PWR->CR |= PWR_CR_DBP;

    // 启用RTC时钟
    RCC->CSR |= RCC_CSR_RTCEN;

    // 等待RTC寄存器同步
    RTC->ISR |= RTC_ISR_INIT;
    while ((RTC->ISR & RTC_ISR_INITF) == 0);

    // 设置RTC时钟源
    RCC->CSR |= RCC_CSR_RTCSEL_LSE; // 使用低速外部晶振作为RTC时钟源
    RCC->CSR &= ~RCC_CSR_RTCSEL; // 清除RTC时钟源选择位

    // 设置预分频器
    RTC->PRER = (127 << RTC_PRER_PREDIV_A_Pos) | (255 << RTC_PRER_PREDIV_S_Pos); // 预分频器A和S的设置

    // 退出RTC初始化模式
    RTC->ISR &= ~RTC_ISR_INIT;
}



 楼主| sj8zw8 发表于 2024-6-30 02:48 | 显示全部楼层
上述代码的主要步骤包括:

启用PWR时钟和RTC时钟。
解锁RTC和后备寄存器的访问。
等待RTC寄存器同步。
配置RTC时钟源,这里选择使用低速外部晶振(LSE)作为RTC的时钟源。
设置RTC预分频器,以确保RTC时钟满足要求。
退出RTC初始化模式,允许RTC开始正常工作。
你可以根据具体的应用需求和硬件设计,对RTC初始化代码进行相应的修改和调整。
rzjvv 发表于 2024-8-31 17:58 | 显示全部楼层
此代码展示了如何配置RTC以使用外部低速晶振作为时钟源,并设置预分频器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

409

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部