以下是一个简单的示例代码,展示了如何在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;
}
|