news 2026/8/7 14:28:29

STM32_RTC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32_RTC
简介

RTC(Real-Time Clock,实时时钟)是单片机中用于提供精确时间计时的外设,广泛应用于需要时间记录、定时任务、日历功能等场景。STM32F407 系列芯片集成了一个独立的 RTC 模块,具有独立的 32.768kHz 低速振荡器(LSE),支持年、月、日、星期、时、分、秒的计时功能,并具有闹钟、周期性唤醒、时间戳等功能。本文从 RTC 的基本原理出发,详细讲解 STM32F407 RTC 的配置方法、代码实现、时间管理以及实际应用案例,帮助你快速掌握 RTC 的使用技巧。

一、RTC核心概念与分类
1.1 基本概念

RTC 是一个独立的 BCD 计数器,用于提供日历和时钟功能,其主要特点包括:

  • 独立电源:RTC 具有独立的电源域(VBAT),在主电源断电时仍可正常工作
  • 低功耗:RTC 在待机模式下仍可正常工作,功耗极低
  • 高精度:支持外部 32.768kHz 晶振,计时精度高
  • 多种功能:支持闹钟、周期性唤醒、时间戳、校准等功能
  • BCD 码格式:时间数据以 BCD 码格式存储

关键参数

  • 时钟源:可选择 LSE(32.768kHz)、LSI(约32kHz)或 HSE 分频
  • 预分频系数:用于将时钟源分频为 1Hz 的秒信号
  • 时间格式:支持 12 小时制和 24 小时制
  • 夏令时:支持夏令时调整
1.2 STM32F407 的 RTC 资源

STM32F407 系列芯片集成了 1 个 RTC 模块:

功能特性
时钟源LSE(32.768kHz)、LSI(约32kHz)、HSE 分频
预分频异步预分频(7位)+ 同步预分频(15位)
时间格式12 小时制或 24 小时制
闹钟2 个可编程闹钟(闹钟A、闹钟B)
周期性唤醒可编程的周期性唤醒中断
时间戳2 个时间戳(入侵时间戳、内部时间戳)
校准数字校准功能,可调整 RTC 频率
备份寄存器32 个 32 位备份寄存器

关键特性

  • 支持 BCD 码格式的时间存储
  • 支持闰年自动计算
  • 支持夏令时调整
  • 支持入侵检测
  • 支持时间戳功能
  • 支持数字校准
二、RTC工作原理
2.1 时钟源与预分频

RTC 的时钟源有三种选择:

LSE(Low Speed External,低速外部晶振)

  • 频率:32.768kHz
  • 精度:高,取决于外部晶振
  • 适用场景:需要高精度计时的应用

LSI(Low Speed Internal,低速内部振荡器)

  • 频率:约 32kHz
  • 精度:较低,受温度和电压影响
  • 适用场景:对精度要求不高的应用

HSE 分频

  • 频率:HSE 时钟分频后得到
  • 精度:高,取决于外部晶振
  • 适用场景:需要高精度计时的应用

预分频
RTC 的预分频分为两级:

  • 异步预分频:7 位,用于将时钟源分频为 1Hz 的秒信号
  • 同步预分频:15 位,用于进一步分频

示例:使用 LSE(32.768kHz)作为时钟源

  • 异步预分频系数:127(0x7F)
  • 同步预分频系数:255(0xFF)
  • 分频后频率:32768 / (127 + 1) / (255 + 1) = 1Hz
2.2 时间寄存器

RTC 的时间寄存器以 BCD 码格式存储时间信息:

RTC_TR(时间寄存器)

  • 秒(SEC):6 位,BCD 码,范围 00-59
  • 分(MIN):7 位,BCD 码,范围 00-59
  • 时(HOUR):6 位,BCD 码,范围 00-23(24 小时制)或 01-12(12 小时制)
  • AM/PM(PM):1 位,12 小时制时有效,0 为 AM,1 为 PM

RTC_DR(日期寄存器)

  • 年(YR):7 位,BCD 码,范围 00-99
  • 月(MTH):5 位,BCD 码,范围 01-12
  • 日(DU):6 位,BCD 码,范围 01-31
  • 星期(WDU):3 位,范围 1-7(1 为星期一)
2.3 闹钟功能

RTC 支持 2 个可编程闹钟(闹钟A、闹钟B):

闹钟配置

  • 闹钟时间:时、分、秒
  • 闹钟日期:日、星期
  • 闹钟掩码:可配置闹钟的匹配条件

闹钟触发

  • 当 RTC 时间与闹钟时间匹配时,触发闹钟中断
  • 可配置闹钟中断为周期性触发或单次触发
三、RTC配置与代码实现
3.1 标准库配置步骤

使用标准库配置 RTC 的基本步骤:

  1. 使能 PWR 时钟和 RTC 时钟
  2. 使能访问备份寄存器
  3. 配置 RTC 时钟源
  4. 配置 RTC 预分频系数
  5. 配置 RTC 时间和日期
  6. 使能 RTC
  7. 配置中断(可选)
3.2 代码实现(RTC,LSE 时钟源)
#include"stm32f4xx.h"#include<stdio.h>/** * @brief 初始化RTC * @param 无 * @retval 成功返回0,失败返回1 */uint8_tRTC_Init(void){RTC_InitTypeDef RTC_InitStructure;RTC_TimeTypeDef RTC_TimeStructure;RTC_DateTypeDef RTC_DateStructure;// 1. 使能时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_RTC,ENABLE);// 2. 使能访问备份寄存器PWR_BackupAccessCmd(ENABLE);// 3. 检查RTC是否已经初始化if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5A5A){// 4. 复位RTCRCC_BackupResetCmd(ENABLE);RCC_BackupResetCmd(DISABLE);// 5. 使能LSERCC_LSEConfig(RCC_LSE_ON);while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);// 6. 配置RTC时钟源为LSERCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);// 7. 使能RTC时钟RCC_RTCCLKCmd(ENABLE);// 8. 等待RTC同步RTC_WaitForSynchro();// 9. 配置RTC预分频系数RTC_InitStructure.RTC_HourFormat=RTC_HourFormat_24;RTC_InitStructure.RTC_AsynchPrediv=127;// 异步预分频系数RTC_InitStructure.RTC_SynchPrediv=255;// 同步预分频系数RTC_Init(&RTC_InitStructure);// 10. 配置RTC时间(默认时间:12:00:00)RTC_TimeStructure.RTC_Hours=12;RTC_TimeStructure.RTC_Minutes=0;RTC_TimeStructure.RTC_Seconds=0;RTC_TimeStructure.RTC_H12=RTC_H12_AM;RTC_SetTime(RTC_Format_BIN,&RTC_TimeStructure);// 11. 配置RTC日期(默认日期:2024-01-01,星期一)RTC_DateStructure.RTC_Year=
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 21:59:45

3分钟解锁钉钉自动打卡:告别早起的智能秘诀

3分钟解锁钉钉自动打卡&#xff1a;告别早起的智能秘诀 【免费下载链接】AutoDingding 钉钉自动打卡 项目地址: https://gitcode.com/gh_mirrors/au/AutoDingding 每天早上被闹钟惊醒&#xff0c;匆匆忙忙洗漱出门&#xff0c;一路狂奔只为赶上9点的打卡&#xff1f;这种…

作者头像 李华
网站建设 2026/7/30 22:34:10

STM32_PWR

简介 PWR(Power Control,电源控制)是 STM32 单片机中用于管理电源模式和电压的外设,支持多种低功耗模式,可显著降低系统功耗。STM32F407 系列芯片配备了功能强大的 PWR 外设,支持睡眠模式、停止模式、待机模式等多种低功耗模式,广泛应用于电池供电、低功耗应用等场景。…

作者头像 李华
网站建设 2026/8/1 0:52:55

阴阳师智能挂机助手:让游戏更轻松的自动化工具

阴阳师智能挂机助手&#xff1a;让游戏更轻松的自动化工具 【免费下载链接】yysScript 阴阳师脚本 支持御魂副本 双开 项目地址: https://gitcode.com/gh_mirrors/yy/yysScript 你是否也曾因为每天重复刷御魂而感到枯燥乏味&#xff1f;是否希望有一款工具能够帮助你自动…

作者头像 李华
网站建设 2026/8/4 14:58:17

如何用代码绘制科研级图形?揭秘LaTeX绘图的隐藏优势

如何用代码绘制科研级图形&#xff1f;揭秘LaTeX绘图的隐藏优势 【免费下载链接】tikz Random collection of standalone TikZ images 项目地址: https://gitcode.com/gh_mirrors/tikz/tikz 在科研论文的创作过程中&#xff0c;可视化元素往往决定了研究成果的传达效率。…

作者头像 李华
网站建设 2026/7/28 14:39:32

VibeThinker-1.5B部署监控:GPU利用率实时查看方法详解

VibeThinker-1.5B部署监控&#xff1a;GPU利用率实时查看方法详解 1. 为什么需要实时监控GPU利用率 当你在本地或云服务器上成功部署 VibeThinker-1.5B-WEBUI 后&#xff0c;第一眼看到的往往是那个简洁的网页界面——输入提示词、点击生成、等待响应。但真正决定你能否稳定、…

作者头像 李华