当前位置: 首页 > news >正文

基于STM32F4的cubemx关于RTC配置说明

文章目录

  • 前言
  • 一、RTC是什么?
  • 二、cubemx配置参数说明
  • 总结


前言

本文基于STM32F4系列芯片,搭配参考手册,在cubemx上详细解释各种配置的含义。


一、RTC是什么?

实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程 闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模 式的自动唤醒单元。
两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星 期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时
补偿。
其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。
无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。
在这里插入图片描述

二、cubemx配置参数说明

在这里插入图片描述
首先选中Activate Clock Source,下面出现三个参数配置。
Hour Format: 用来选择12小时格式还是24小时格式
Asynchronous Predivider value: 选择7位异步预分频数值。
Synchronous Predivider value 选择15位同步预分频数值。
搭配上面的RTC框图,一般选择LSE最为RTC时钟源,经过7位异步预分频得到ck_apre,作为亚秒递减计数器的时钟,粗略校准之后再经过15位同步预分频得到ck_spre,作为日历和16位唤醒自动重载定时器的时钟。
一般ck_spre要求为1Hz,使用两个预分频器生成ck_spre,最好设置7位异步预分频数值越大越好,以最大程度降低功耗。
在这里插入图片描述
选中Activate Calendar使能日历。
Calendar Time用来设置时、分、秒数值,可读可写。
Data Format用来设置数据存储格式,可以设置二进制存储和BCD码存储,不过手册上明确说明了使用BCD码存储。
Day Light Saving: value of hour adjustment 用于设置夏令时调整,夏令时是一种为节约能源而人为调整时间的制度,可以设置为不调整、调快1小时和调慢1小时。
Store Operation 用于将当前的夏令时调整状态存储到 RTC 备份寄存器(BKP_DR0)中。这样即使系统断电或复位,RTC 也能记住当前的夏令时设置,确保时间显示的连续性。具有清除和存储两种操作。
清除操作场景
首次配置夏令时,需要初始化存储状态
禁用夏令时功能时,清除之前的存储记录。
储存操作场景
启用夏令时并调整时钟后(如从标准时间切换到夏令时)。
系统重启后,需要恢复之前的夏令时设置。
Calendar Date 用来设置日历的日期、月份、日份和年份。
在这里插入图片描述
根据RTC框图可知,RTC有两个可编程闹钟,对应Alarm AAlarm B
每个闹钟可以直接产生或者复用到AF1 。每个闹钟可设置时、分、秒、亚秒。接着就是一堆屏蔽设置。
Alarm mask hours 为例
Alarm mask hours 是一个掩码位,用于控制闹钟(Alarm A)是否需要匹配小时值。具体来说:
启用掩码:闹钟触发时不检查小时值,只要分钟、秒等其他匹配条件满足,闹钟就会触发。
禁用掩码:闹钟触发时必须匹配设定的小时值,否则即使其他条件满足也不会触发。
假设你设置闹钟时间为 12:30:00(小时 = 12,分钟 = 30,秒 = 0):
Alarm mask hours = enable
此时闹钟会忽略小时值,只要分钟为 30 且秒为 0,每小时都会触发一次(例如 01:30:00、02:30:00 等)。
Alarm mask hours = disable
此时闹钟只会在小时 = 12、分钟 = 30、秒 = 0时触发,即每天的 12:30:00 触发一次。
Alarm Date Week Day Sel 指定闹钟使用日期(Date)还是星期(Week day)作为匹配条件。Date:使用日期(1~31)作为匹配条件。Week Day:使用星期(周一~周日)作为匹配条件。
下面的 Alarm Week DayAlarm Day就是具体匹配的星期或日期。
在这里插入图片描述
根据RTC框图可知,RTC有一个16位唤醒自动重载定时器,对应Wake UP。RTC 的唤醒定时器可用于从低功耗模式(如停止模式、待机模式)自动唤醒 STM32,实现定时唤醒功能,降低系统功耗。同样可以直接产生或者复用到AF1 。
wake up clock 用于设置定时器时钟,可以是2、4、8 或 16 分频的 RTC 时钟,当 RTCCLK 为 LSE (32.768 kHz) 时,可配置的唤醒中断周期介于 122 μs 和 32 s 之间, 且分辨率低至 61 μs。
当选择 ck_spre (1Hz)时钟,可得到的唤醒时间为 1s 到 36h 左右,分辨率为 1 秒。因为定时较长,可以选择WUCKSEL[2] = 1,把定时器从16位扩展为17位,最高位由WUCKSEL[1]代替。
**WakeUp Counter:**设置唤醒周期的计数值。

Timestamp Routed to AF1 时间戳复用至 AF1
时间戳(Timestamp)功能:当特定外部事件(如引脚上升 / 下降沿)发生时,RTC 自动记录当前的日期和时间,用于事件发生时刻的精确追踪。将时间戳功能连接到特定的复用功能引脚(AF1),使外部事件发生能够被RTC捕获,从而触发时间戳记录。
Tamper1 Routed to AF1 防篡改引脚复用至 AF1
防篡改(Tamper)功能:检测外部物理干预(如电池被取出、设备被拆卸),并在检测到篡改时:
触发中断或复位。
自动清除 RTC 备份寄存器中的敏感数据(如加密密钥)。
防篡改引脚复用至 AF1,用于外部篡改事件的检测。
Calibration 校准时钟输出,可以选择512Hz或1Hz输出的 RTC_CALIB,或者不输出。
Reference Clock Detection(参考时钟检测)自动检测 RTC 时钟源(如 LSE、LSI)的稳定性,确保 RTC 计时准确。


总结

本章简单的对RTC在cubemx的配置参数进行了大致说明,因为有些功能缺乏一些实践验证,所以在解释中有所不足或者说有所错误,欢迎大家指出。希望本章内容在大家配置RTC是能有所帮助。

相关文章:

  • 参与开发的注意事项
  • 手写Tomcat(二)—Tomcat简化模型架构
  • 第六部分:第六节 - TypeScript 与 NestJS:打造类型安全的厨房管理流程
  • echarts 空心饼图,内说明文字居中
  • 已经 上线 Vue 项目 国际化 i18n 中译英
  • CVE-2022-22947源码分析与漏洞复现
  • Python应用“关键字”初解
  • 车载以太网网络测试-27【SOME/IP-SD简述】
  • MAX96752FGTN/V+T:双LVDS(OLDI)输出的GMSL2解串器架构与应用探讨——汽车与工业视频传输方案深度分析
  • 格雷希尔快速封堵接头,解决新能源汽车的气密性检测和三电系统的综合测试
  • VSCode配置C/C++环境
  • 编程日志5.17
  • MPI中近邻(neighborhood)之间的All-to-All通信
  • Web3.0:下一代互联网的变革与机遇
  • “智”斗秸秆焚烧,考拉悠然以科技之力筑牢生态安全防线
  • AI 招聘系统科普:如何辨别真智能与伪自动化
  • openai-whisper-asr-webservice接入dify
  • 在Ubuntu18.04下搭建SadTalker让图片开口说话
  • Python爬虫实战:研究Crawley 框架相关技术
  • MIPI摄像头linux驱动开发步骤及说明
  • 沧州做网站/网络营销好找工作吗
  • 做销售网站要多少钱/不限次数观看视频的app
  • 石家庄品牌网站建设/小红书推广方式
  • 网站建设网页设计服务/网站首页快速收录
  • 建设网站要先给钱才能做/今日微博热搜榜前十名
  • 深圳公司视频制作/大连seo建站