0
收藏
微博
微信
复制链接

​STM32单片机的RTC配置过程(附代码)

2025-04-11 16:24
64

在STM32单片机里,实时时钟(Real-time clock: RTC)是一个独立的计时器。RTC提供一组连续运行的计数器,可以与合适的软件一起使用,以提供时钟日历功能。可以写入计数器值以设置系统的当前时间/日期。

image.png

1、时钟源配置

// 使能电源时钟和备份域访问

__HAL_RCC_PWR_CLK_ENABLE();

HAL_PWR_EnableBkUpAccess();


// 选择时钟源(LSE/LSI)

RCC_OscInitTypeDef RCC_OscInit = {0};

RCC_OscInit.OscillatorType = RCC_OSCILLATORTYPE_LSE;

RCC_OscInit.LSEState = RCC_LSE_ON;

HAL_RCC_OscConfig(&RCC_OscInit);


// 配置RTC时钟

RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;

PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;

HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

2、RTC初始化

// 使能RTC时钟

__HAL_RCC_RTC_ENABLE();


// 初始化结构体配置

RTC_TimeTypeDef sTime = {0};

RTC_DateTypeDef sDate = {0};


hrtc.Instance = RTC;

hrtc.Init.HourFormat = RTC_HOURFORMAT_24;  // 24小时制

hrtc.Init.AsynchPrediv = 127;             // 异步预分频(LSE 32.768kHz时)

hrtc.Init.SynchPrediv = 255;              // 同步预分频

hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;    // 输出关闭

HAL_RTC_Init(&hrtc);

3、时间日期设置

// 设置时间

sTime.Hours = 12;

sTime.Minutes = 30;

sTime.Seconds = 0;

sTime.SubSeconds = 0;

sTime.TimeFormat = RTC_HOURFORMAT12_AM;

HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);


// 设置日期

sDate.WeekDay = RTC_WEEKDAY_MONDAY;

sDate.Month = RTC_MONTH_JANUARY;

sDate.Date = 1;

sDate.Year = 23;  // 2023年

HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

4、闹钟配置(可选)

// 使能RTC全局中断

HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);


// 中断服务函数

void RTC_Alarm_IRQHandler(void)

{

    HAL_RTC_AlarmIRQHandler(&hrtc);

    // 用户处理代码

}

5、中断配置

// 使能RTC全局中断

HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);


// 中断服务函数

void RTC_Alarm_IRQHandler(void)

{

    HAL_RTC_AlarmIRQHandler(&hrtc);

    // 用户处理代码

}

6、关键参数说明

①预分频计算

检查晶振负载电容(通常6pF)

确保LSE使能配置正确

使用示波器测量PC14/PC15引脚

②备份域注意事项

检查预分频配置是否正确

确认后备电池(VBAT)供电正常

检查RTC寄存器写保护状态

③低功耗模式

// 进入Stop模式时保持RTC运行
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);


本文凡亿教育原创文章,转载请注明来源!

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

小白电子

一个从小白过来的电子工程师,并且想让更多的电子小白变成对国家有用的电子设计工程师