stm32_RTC_2_HAL——stm32CudeMX

介绍

RTC(实时时钟)不仅仅提供计数功能,它是一个完整的时钟和日历模块,用于提供日期和时间信息。RTC 能够提供年、月、日、星期、时、分、秒等时间信息,并且通常具有闹钟功能,可以用于定时唤醒或触发事件。

RTC 模块的特点包括:

  1. 时间保持:即使在主电源断电的情况下,RTC 也能通过备用电源(如电池或超级电容)保持时间的运行。

  2. 日历功能:RTC 能够跟踪当前的日期,包括年、月、日和星期信息。

  3. 闹钟功能:RTC 可以设置闹钟,当达到设定的时间时,可以触发中断或唤醒微控制器。

  4. 时间格式:RTC 支持多种时间格式,如12小时制和24小时制。

  5. 自动日历管理:RTC 能够处理闰年和月份天数的差异,自动调整日期。

  6. 时间同步:RTC 可以与外部时间源(如网络时间协议 NTP)同步,以保持时间的准确性。

  7. 温度补偿:一些 RTC 模块具有温度补偿功能,以减少温度变化对时钟准确性的影响。

 STM32的HAL库来配置RTC(实时时钟)模块通常包括以下几个步骤:

  1. RTC时钟源配置:首先,需要配置RTC的时钟源,这通常是通过LSE(低速外部时钟)或者LSI(低速内部时钟)来完成的。这可以通过调用HAL_RCC_OscConfig()函数来设置。

  2. 启用RTC时钟:通过__HAL_RCC_RTC_ENABLE()宏启用RTC时钟。

  3. RTC时间结构体初始化:创建一个RTC_TimeTypeDefRTC_DateTypeDef结构体变量来配置时间和日期。

  4. 配置RTC:通过HAL_RTC_Init()函数来初始化RTC。在这个函数内部,会调用HAL_RTC_MspInit()来配置RTC相关的GPIO、NVIC中断和时钟。

  5. 设置时间:使用HAL_RTC_SetTime()函数来设置时间,使用HAL_RTC_SetDate()函数来设置日期。

  6. 启用相关中断(可选):如果需要使用RTC的中断,比如闹钟中断,可以通过HAL_RTC_EnableIT()函数来使能。

  7. 中断处理函数(可选):编写中断处理函数,例如HAL_RTC_AlarmAEventCallback(),当RTC闹钟事件发生时会调用这个函数。

  8. 启动RTC:最后,通过调用HAL_RTCEx_RTCCLKConfig()函数来启动RTC时钟。

 

 stm32CudeMX设置

1设置时钟源

RTC使用外部低数时钟

1.1

 1.2打开RTC

1.3设置RTC时钟源

1.4设置其他时钟

 2设置RTC

2.1激活时钟源和激活日历()将其勾选

2.2RTC配置

设置时间为2024年5月8日19:43:0

 

 3使用uart输出数据

之后生成代码

源码设置

函数

  1. 设置当前时间

    • 调用 HAL_RTC_SetTime 来设置小时、分钟、秒和亚秒。
    • 调用 HAL_RTC_SetDate 来设置年、月、日和星期。
  2. 获取当前时间

    • 调用 HAL_RTC_GetTime 来获取当前时间。
    • 调用 HAL_RTC_GetDate 来获取当前日期。
  3. 配置闹钟

    • 调用 HAL_RTC_SetAlarm 来设置闹钟A或B的时间。
    • 调用 HAL_RTC_GetAlarm 来获取闹钟的当前设置。
  4. 处理闹钟中断

    • 在闹钟中断服务函数中调用 HAL_RTC_AlarmIRQHandler 来处理闹钟中断事件。
  5. 配置唤醒定时器

    • 调用 HAL_RTCEx_SetWakeUpTimer 来配置唤醒定时器,用于低功耗模式下的定时唤醒。
  6. 处理唤醒定时器中断

    • 在唤醒定时器中断服务函数中调用 HAL_RTCEx_WakeUpTimerIRQHandler 来处理定时器中断事件。
  7. 防篡改(Tamper)功能

    • 调用 HAL_RTCEx_SetTamper 来配置防篡改功能。
    • 调用 HAL_RTCEx_TamperGetStatus 来获取防篡改状态。
  8. 备份寄存器操作

    • 调用 HAL_RTCEx_BKUPWrite 来向备份寄存器写入数据。
    • 调用 HAL_RTCEx_BKUPRead 来从备份寄存器读取数据。
  9. 校准RTC

    • 调用 HAL_RTCEx_SetCalibrationOutPut 来配置RTC的校准输出。
    • 调用 HAL_RTCEx_SetCalibration 来设置RTC的校准值。
  10. 时间戳功能

    • 调用 HAL_RTCEx_SetTimeStamp 来配置时间戳功能。
    • 调用 HAL_RTCEx_GetTimeStamp 来获取时间戳值。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-依赖注入的处理过程

前置知识 1 入口 DefaultListableBeanFactory#resolveDependency 2 每个依赖都有对应的DependencyDescriptor 3 自定绑定候选对象处理器AutowireCapableBeanFactory 注入处理 我们可以看到AutowireCapableBeanFactory中有两个方法: 第一个是单个注入:…

【Java】山外有山,类外还有类

【Java】山外有山,类外还有类 内部类是Java语言中的一种特性,它允许在另一个类中定义一个类。 内部类可以是静态的(不依赖于外部类的实例),也可以是非静态的(依赖于外部类的实例)。 在本篇博…

【时序大模型总结】学习记录(1)

1.TimeGPT-1 思路:在来自不同领域的大量数据上训练模型,然后对未见过的数据产生零样本的推断。 作者对TimeGPT进行了超过1000亿个数据点的训练,这些数据点都来自开源的时间序列数据。该数据集涵盖了广泛的领域,从金融、经济和天气…

C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

TypeScript学习日志-第十九天(namespace命名空间)

namespace命名空间 一、基本用法 namespace 所有的变量以及方法必须要导出才能访问,如图: 二、 嵌套 namespace 可以进行嵌套使用,如图: 它也必须需要导出才能访问 三、合并 当我们出现两个同名的 namespace 它就会合并这两…

【C++历练之路】STL中的哈希——手搓哈希底层逻辑

W...Y的主页 💕 代码仓库分享 😊 前言: "hash"通常指的是哈希,它是一种将数据(如字符串或者数字)转换为一个固定长度的数值(通常是整数)的方法。哈希函数能够将任意长度…

C++笔试强训day15

目录 1.平方数 2.分组 Check函数的具体实现&#xff1a; 3.拓扑排序 1.平方数 链接 数学找规律&#xff0c;找离 x 最近的完全平方数 y。 先开平方根再利用四舍五入进位即可。 详细代码&#xff1a; #include <cmath> #include <iostream> using namespac…

读书笔记——《高质量C++/C编程指南》(2)

目录 前言 命名规则 共性规则 简单的Windows应用程序命名规则 表达式和基本语句 运算符优先级 复合表达式 if语句 布尔变量与零值比较 整型变量与零值比较 浮点变量与零值比较 指针变量与零值比较 对if 语句的补充说明 循环语句的效率 for 语句的循环控制变量 s…

第一天复习Qt文件读取

Qt文件操作&#xff1a; 1、QFile QTextStream操作文件案例&#xff1a; 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度&#xff0c;如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…

【算法】滑动窗口——将x减到0的最小操作数

本节博客主要是讲的我解“将x减到0的最小操作数”这道题的思路历程&#xff0c;从最开始的想法到代码提交的详细记录&#xff0c;有需要借鉴即可。 目录 1.题目2.代码示例3.细节3.1left越界3.2特殊情况 4.总结 1.题目 题目链接&#xff1a;LINK 看题目意思是就是给你一个数X&…

Java快速入门系列-11(项目实战与最佳实践)

第十一章&#xff1a;项目实战与最佳实践 11.1 项目规划与需求分析项目规划需求分析实例代码 11.2 系统设计考虑实例代码 11.3 代码实现与重构实例代码 11.4 性能优化与监控实例代码 11.5 部署与持续集成/持续部署(CI/CD)实例代码 11.1 项目规划与需求分析 在进行任何软件开发…

JavaScript异步编程——05-回调函数

我们在前面的文章《JavaScript 基础&#xff1a;异步编程/单线程和异步》中讲过&#xff0c;Javascript 是⼀⻔单线程语⾔。早期我们解决异步场景时&#xff0c;⼤部分情况都是通过回调函数来进⾏。 &#xff08;如果你还不了解单线程和异步的概念&#xff0c;可以先去回顾上一…