STM32实时时钟(RTC)的配置和使用方法详解

实时时钟(RTC)是STM32系列微控制器上的一个重要模块,用于提供准确的时间和日期信息。在本文中,我们将详细介绍STM32实时时钟的配置和使用方法。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

1. RTC 的硬件连接:
   在开始使用STM32的RTC模块之前,需要连接外部低速晶体振荡器(32.768kHz)到相应的RTC引脚。具体的引脚连接可查看芯片的数据手册。接下来,您需要使用电源管理模块对RTC进行供电。

2. RTC 的初始化配置:
   首先,在启用RTC之前,需要使能并配置RTC外设时钟,将其连接到低速外部晶体振荡器。以下是一个RTC初始化函数示例:

```c
#include "stm32xxxx.h"

void RTC_Init() {
  RTC_HandleTypeDef rtc;

  // 配置RTC外设时钟
  __HAL_RCC_RTC_ENABLE();
  
  // 设置RTC分频器为32767,以获得1s的时钟周期
  HAL_RTCEx_SetAsynchPrescaler(&rtc, 0x7FFF);
  
  // 初始化RTC外设
  rtc.Instance = RTC;
  rtc.Init.HourFormat = RTC_HOURFORMAT_24;  // 小时表示为24小时制
  rtc.Init.AsynchPrediv = 0x7FFF;  // 12799+1,异步分频器的低16位值
  rtc.Init.SynchPrediv = 0xFF;  // 255+1,同步分频器的低8位值

  HAL_RTC_Init(&rtc);
}
```

3. RTC 的时间和日期设置:
   一旦RTC初始化完成,我们可以使用HAL_RTC_SetTime()和HAL_RTC_SetDate()函数设置RTC的当前时间和日期。以下是一个设置时间和日期的示例:

```c
RTC_TimeTypeDef rtcTime;
RTC_DateTypeDef rtcDate;
  
// 设置时间
rtcTime.Hours = 10;
rtcTime.Minutes = 30;
rtcTime.Seconds = 0;
rtcTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
rtcTime.StoreOperation = RTC_STOREOPERATION_RESET;
  
HAL_RTC_SetTime(&hrtc, &rtcTime, RTC_FORMAT_BIN);
  
// 设置日期
rtcDate.WeekDay = RTC_WEEKDAY_MONDAY;
rtcDate.Month = RTC_MONTH_JANUARY;
rtcDate.Date = 1;
rtcDate.Year = 21;
  
HAL_RTC_SetDate(&hrtc, &rtcDate, RTC_FORMAT_BIN);
```

4. RTC 的时间和日期读取:
   使用HAL_RTC_GetTime()和HAL_RTC_GetDate()函数,我们可以读取RTC的当前时间和日期。以下是一个读取时间和日期的示例:

```c
RTC_TimeTypeDef rtcTime;
RTC_DateTypeDef rtcDate;
  
HAL_RTC_GetTime(&hrtc, &rtcTime, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &rtcDate, RTC_FORMAT_BIN);
  
// 在rtcTime和rtcDate结构中包含了当前的时间和日期
```

5. RTC 中断的配置和使用:
   RTC可以配置中断以获取特定事件的通知,例如新的秒脉冲或闹钟触发。以下是一个RTC闹钟中断的配置示例:

```c
RTC_AlarmTypeDef rtcAlarm;
  
// 配置闹钟时间
rtcAlarm.AlarmTime.Hours = 12;
rtcAlarm.AlarmTime.Minutes = 0;
rtcAlarm.AlarmTime.Seconds = 0;
rtcAlarm.AlarmDateWeekDay = RTC_WEEKDAY_MONDAY;
rtcAlarm.AlarmMask = RTC_ALARMMASK_NONE;
rtcAlarm.Alarm = RTC_ALARM_A;
rtcAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
rtcAlarm.AlarmSubSecondValue = 0x0;
  
// 使能并配置闹钟中断
HAL_RTC_SetAlarm_IT(&hrtc, &rtcAlarm, RTC_FORMAT_BIN);
```

必要时,还需实现RTC中断处理函数,并将其与RTC的中断向量关联。

```c
void RTC_Alarm_IRQHandler() {
  HAL_RTC_AlarmIRQHandler(&hrtc);
  
  // 处理RTC闹钟中断
}
```

6. RTC 的唤醒和日历功能:
   RTC模块还提供了唤醒功能,允许将处理器从低功耗模式唤醒,并提供日历功能,通过固定日期和时间配置的闹钟来唤醒处理器。
您可以使用HAL_RTCEx_SetWakeUpTimer()函数配置唤醒,使用RTC闹钟配置设定的时间和日期。

这里仅涵盖了STM32实时时钟的基本配置和使用方法。您还可以使用其他RTC功能,如定期调校(RTC损耗校准),具体可参考STM32库和RTC驱动的相关文档。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/361324.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】默认成员函数

与普通成员函数差距较大,形式对于我们比较陌生,但这是语法,是我们是必须要掌握的。 目录 类的默认成员函数:构造函数:概念:语法:特性: 析构函数:概念:语法&a…

Django模型(七)

一、聚合与分组查询 1.1、准备数据 class Cook(models.Model):"""厨师"""name = models.CharField(max_length=32,verbose_name=厨师名)level = models.IntegerField(verbose_name=厨艺等级)age = models.IntegerField(verbose_name=年龄)sect …

消息中间件之RocketMQ源码分析(三)

RocketMQ中的Consumer启动流程 RocketMQ客户端中有两个独立的消费者实现类分别为DefaultMQPullConsumer和DefaultMQPushConsumer, DefaultMQPullConsumer DefaultMQPullConsumer,该消费者使用时需要用户主动从Broker中Pull消息和消费消息,提交消费位点…

Springboot-SpringCloud学习

文章目录 web项目开发历史 SpringBootSpring以及Springboot是什么微服务第一个Springboot项目配置如何编写 yaml自动装配原理集成 web开发(业务核心)集成 数据库 Druid分布式开发:Dubbo(RPC) zookeeperswagger&#x…

掌握使用 React 和 Ant Design 的个人博客艺术之美

文章目录 前言在React的海洋中起航安装 Create React App安装Ant Design 打造个性化的博客风格通过路由实现多页面美化与样式定制部署与分享总结 前言 在当今数字时代,个人博客成为表达观点、分享经验和展示技能的独特平台。在这个互联网浪潮中,选择使用…

新火种AI|脑洞照进现实!马斯克正式官宣,已将芯片连入大脑...

作者:小岩 编辑:彩云 2024年1月30日,马斯克在社交媒体上宣布,他的公司Neuralink已经完成了首例人类大脑芯片植入手术,并且目前手术恢复状况良好。这一突破性进展意味着人类距离实现大脑与电脑的直接连接更近了一步。…

【mysql】InnoDB引擎的索引

目录 1、B树索引 1.1 二叉树 1.1.1 二分查找(对半查找) 1.1.2 树(Tree) 1.1.2.1 树的定义 1.1.2.2 树的特点 1.1.2.3 二叉树 1.1.2.4 二叉查找(搜索)树 1.2 B树 1.2.1 聚簇索引(clust…

AI-数学-高中-14-函数零点存在定理和运用

原作者视频:【函数综合】【考点精华】1零点存在性定理的运用(基础)_哔哩哔哩_bilibili 1.定义: 2.零点存在定义: 2.函数零点与图像焦点的转化 零点如果不好求,将函数化成两个函数再画图,看函数…

防抖和节流?有什么区别?如何实现?

#一、是什么 本质上是优化高频率执行代码的一种手段 如:浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能 为了优化体验,需要对这类…

计算机网络-物理层传输介质(导向传输介质-双绞线 同轴电缆 光纤和非导向性传输介质-无线波 微波 红外线 激光)

文章目录 传输介质及分类导向传输介质-双绞线导向传输介质-同轴电缆导向传输介质-光纤非导向性传输介质小结 传输介质及分类 物理层规定电气特性:规定电气信号对应的数据 导向传输介质-双绞线 双绞线的主要作用是传输数据和语音信息。它通过将两根导线以特定的方…

python爬虫2

1.table 是表格&#xff0c;tr是行&#xff0c;td是列 ul li是无序列标签用的较多&#xff0c;ol li是有序列标签 最基本的结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title> Title </title>…

【JavaEE】UDP协议与TCP协议

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

CSS复合选择器

目录 1.什么是复合选择器 2.后代选择器 3.子选择器 4.并集选择器 5.伪类选择器 5.1链接伪类选择器 5.2 :focus 伪类选择器 6.总结 7.补充 7.1相邻兄弟选择器&#xff08;也叫加号选择器&#xff09; 7.2通用兄弟选择器&#xff08;也叫波浪号选择器&#xff09; 1. 什…

力扣hot100 划分字母区间 贪心 思维 满注释版

Problem: 763. 划分字母区间 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 代码随想录 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public List<Integer> partitionLabels(String s){// 创建哈希…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期&#xff08;待优化&#xff09;2.3.5 实测 3.总结 1.简…

闭包的理解?闭包使用场景

说说你对闭包的理解&#xff1f;闭包使用场景 #一、是什么 一个函数和对其周围状态&#xff08;lexical environment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组合就是闭包&#xff08;closure&#…

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错

场景 Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放&#xff1a; Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放_monibuca 搭建流媒体服务-CSDN博客 Nginx搭建RTMP服务器FFmpeg…

Origin 2022下载安装教程,操作简单,小白也能轻松搞定,附安装包,带软件使用教程

前言 Origin是一个科学绘图、数据分析软件&#xff0c;支持各种各样的2D/3D图形&#xff0c;包括统计&#xff0c;信号处理&#xff0c;曲线拟合以及峰值分析&#xff0c;Origin具有强大的数据导入功能和多样的图形输出格式。 准备工作 1、Win7及以上系统 2、提前准备好 Or…

十分钟快速上手Spring Boot与微信小程序API接口的调用,快速开发小程序后端服务

1.1 微信小程序API接口介绍 微信小程序API接口是连接小程序前端与后端服务器的桥梁&#xff0c;它提供了丰富的功能接口&#xff0c;包括用户信息、支付、模板消息、数据存储等。这些API接口能够满足开发者在小程序中实现各种复杂业务逻辑的需求。 用户信息接口 用户信息接口…

Windows PC版微信内置浏览器调试(更新版)

前言 在日常的开发中&#xff0c;尤其是在微信公众号的相关开发中&#xff0c;我们需要进行微信端的调试&#xff0c;如果是后端开发&#xff0c;频率会更高。早期的微信版本&#xff0c;还支持查看网页元素以及接口请求&#xff0c;近年来&#xff0c;微信将这个功能频闭掉了…