hal_stm32_RTC函数

1设置当前时间:


调用 HAL_RTC_SetTime 来设置小时、分钟、秒和亚秒。
调用 HAL_RTC_SetDate 来设置年、月、日和星期。

HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);

HAL_RTC_SetTime

这个函数用于设置RTC的时间,包括小时、分钟、秒和亚秒。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sTime:指向RTC_TimeTypeDef结构体的指针,该结构体用于存储时间信息。//自己创建
  • Format:这个参数指定了时间数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

HAL_RTC_SetDate

这个函数用于设置RTC的日期,包括年、月、日和星期。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sDate:指向RTC_DateTypeDef结构体的指针,该结构体用于存储日期信息。//自己创建
  • Format:这个参数指定了日期数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

 2获取当前时间:


调用 HAL_RTC_GetTime 来获取当前时间。
调用 HAL_RTC_GetDate 来获取当前日期。
 

HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);

HAL_RTC_GetTime

这个函数用于获取RTC的当前时间,包括小时、分钟、秒和亚秒。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sTime:指向RTC_TimeTypeDef结构体的指针,该结构体用于存储获取的时间信息。
  • Format:这个参数指定了时间数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

HAL_RTC_GetDate

这个函数用于获取RTC的当前日期,包括年、月、日和星期。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sDate:指向RTC_DateTypeDef结构体的指针,该结构体用于存储获取的日期信息。
  • Format:这个参数指定了日期数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

  1. 3配置闹钟

    • 调用 HAL_RTC_SetAlarm 来设置闹钟A或B的时间。
    • 调用 HAL_RTC_GetAlarm 来获取闹钟的当前设置。
HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format);
HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format);

HAL_RTC_SetAlarm

这个函数用于设置RTC的闹钟时间。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sAlarm:指向RTC_AlarmTypeDef结构体的指针,该结构体用于存储闹钟时间信息。
  • Format:这个参数指定了时间数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

HAL_RTC_GetAlarm

这个函数用于获取RTC的当前闹钟设置。

  • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
  • sAlarm:指向RTC_AlarmTypeDef结构体的指针,该结构体用于存储获取的闹钟信息。
  • Alarm:这个参数指定了要获取的闹钟,可以是RTC_ALARM_ARTC_ALARM_B
  • Format:这个参数指定了时间数据的格式,可以是RTC_FORMAT_BIN(二进制格式)或RTC_FORMAT_BCD(BCD格式)。

闹钟A(Alarm A)

闹钟A是一个功能强大的闹钟,它可以配置为在特定的日期和时间触发,或者忽略日期,仅根据时间触发。它还可以配置为在每周的特定日子触发。闹钟A可以用来实现各种复杂的闹钟功能,比如每天的闹钟、每周特定日子的闹钟或者特定日期的闹钟。

闹钟B(Alarm B)

闹钟B是一个简单的秒闹钟,它可以在设定的秒数后触发。闹钟B通常用于实现周期性的事件,比如每秒、每分钟或每小时触发一次。闹钟B不支持基于日期的触发,它只能根据时间(小时、分钟和秒)来触发。

  1. 4处理闹钟中断

    • 在闹钟中断服务函数中调用 HAL_RTC_AlarmIRQHandler 来处理闹钟中断事件。

  1. 5配置唤醒定时器

    • 调用 HAL_RTCEx_SetWakeUpTimer 来配置唤醒定时器,用于低功耗模式下的定时唤醒。
    • HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
      

    • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
    • WakeUpCounter:唤醒定时器的计数值。这个值决定了唤醒定时器在唤醒事件发生之前会等待的时钟周期数。计数值的计算取决于唤醒时钟源的选择。
    • WakeUpClock:唤醒定时器的时钟源。这个参数可以是RTC_WAKEUPCLOCK_RTCCLK_DIV16RTC_WAKEUPCLOCK_RTCCLK_DIV8RTC_WAKEUPCLOCK_RTCCLK_DIV4RTC_WAKEUPCLOCK_RTCCLK_DIV2RTC_WAKEUPCLOCK_CK_SPRE_16BITSRTC_WAKEUPCLOCK_CK_SPRE_17BITS,用于选择唤醒定时器的时钟分频。
  2. 6处理唤醒定时器中断

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

    • 调用 HAL_RTCEx_SetTamper 来配置防篡改功能。
    • 调用 HAL_RTCEx_TamperGetStatus 来获取防篡改状态。
    • HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper, uint32_t TamperPinActiveLevel);
      HAL_StatusTypeDef HAL_RTCEx_TamperGetStatus(RTC_HandleTypeDef *hrtc, uint32_t Tamper, uint32_t *TamperStatus);
      

      HAL_RTCEx_SetTamper 

    • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
    • Tamper:这个参数指定了要配置的防篡改引脚。它可以是RTC_TAMPER_1RTC_TAMPER_2RTC_TAMPER_3
    • TamperPinActiveLevel:这个参数指定了防篡改引脚的激活电平。它可以是RTC_TAMPERPIN_ACTIVE_HIGH(高电平激活)或RTC_TAMPERPIN_ACTIVE_LOW(低电平激活)。
    • HAL_RTCEx_TamperGetStatus

    • hrtc:指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置信息。
    • Tamper:这个参数指定了要查询的防篡改输入。它可以是RTC_TAMPER_1RTC_TAMPER_2RTC_TAMPER_3RTC_TAMPER_ALL
    • TamperStatus:指向uint32_t类型的指针,用于存储获取的防篡改状态
  4. 8备份寄存器操作

    • 调用 HAL_RTCEx_BKUPWrite 来向备份寄存器写入数据。
    • 调用 HAL_RTCEx_BKUPRead 来从备份寄存器读取数据。
    • HAL_StatusTypeDef HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
      

    • hrtc: 一个指向RTC_HandleTypeDef结构体的指针,该结构体包含了RTC模块的配置和状态信息。
    • BackupRegister: 要写入的备份寄存器的编号。STM32微控制器通常有多个备份寄存器,编号从0开始。
    • Data: 要写入备份寄存器的数据。这个参数的类型通常是uint32_t,即无符号32位整数。
    • uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister)
      

    • hrtc: 同上,指向RTC_HandleTypeDef结构体的指针。
    • BackupRegister: 要读取的备份寄存器的编号。
  5. 9校准RTC

    • 调用 HAL_RTCEx_SetCalibrationOutPut 来配置RTC的校准输出。
    • 调用 HAL_RTCEx_SetCalibration 来设置RTC的校准值。
    • HAL_RTCEx_SetCalibrationOutPut

      HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput, uint32_t CalibOutputPolarity, uint32_t CalibOutputFrequency)
      
    • hrtc: 指向RTC_HandleTypeDef结构体的指针,包含了RTC的配置和状态信息。
    • CalibOutput: 用于启用或禁用RTC校准输出。通常是一个布尔值,例如RTC_CALIBOUTPUT_ENABLERTC_CALIBOUTPUT_DISABLE
    • CalibOutputPolarity: 用于设置校准输出的极性。可以是RTC_CALIBOUTPUT_POLARITY_HIGHRTC_CALIBOUTPUT_POLARITY_LOW
    • CalibOutputFrequency: 用于设置校准输出的频率。可以是RTC_CALIBOUTPUT_FREQ_512HZRTC_CALIBOUTPUT_FREQ_1HZ等。
    • 这个函数用于配置RTC的校准输出。校准输出是一个可以被用于外部时钟校准的信号。返回值是一个HAL_StatusTypeDef枚举类型的值,指示操作是否成功。

      HAL_RTCEx_SetCalibration

      HAL_StatusTypeDef HAL_RTCEx_SetCalibration(RTC_HandleTypeDef *hrtc, uint32_t CalibSign, uint32_t Value)
      
    • hrtc: 同上,指向RTC_HandleTypeDef结构体的指针。
    • CalibSign: 用于设置校准值的符号。可以是RTC_CALIBSIGN_POSITIVERTC_CALIBSIGN_NEGATIVE
    • Value: 要设置的校准值。这个值决定了校准的幅度。
    • 这个函数用于设置RTC的校准值。RTC校准功能允许微调时钟频率,以补偿晶体的偏差。返回值是一个HAL_StatusTypeDef枚举类型的值,指示操作是否成功。

  6. 10时间戳功能

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

HAL_RTCEx_SetTimeStamp

HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin)
  • hrtc: 同上,指向RTC_HandleTypeDef结构体的指针。
  • TimeStampEdge: 用于设置时间戳的触发边沿。可以是RTC_TIMESTAMPEDGE_RISINGRTC_TIMESTAMPEDGE_FALLING
  • RTC_TimeStampPin: 用于选择时间戳功能的输入引脚。可以是RTC_TIMESTAMPPIN_DEFAULT

这个函数用于配置RTC的时间戳功能。时间戳功能允许在指定的引脚上检测到边沿事件时捕获当前时间。返回值是一个HAL_StatusTypeDef枚举类型的值,指示操作是否成功。

HAL_RTCEx_GetTimeStamp

HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format)
  • hrtc: 同上,指向RTC_HandleTypeDef结构体的指针。
  • sTimeStamp: 指向RTC_TimeTypeDef结构体的指针,用于存储获取的时间戳时间。
  • sTimeStampDate: 指向RTC_DateTypeDef结构体的指针,用于存储获取的时间戳日期。
  • Format: 用于指定时间戳的格式。可以是RTC_FORMAT_BINRTC_FORMAT_BCD

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

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

相关文章

ubuntu_Docker安装配置

什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有…

为什么要梯度累积

文章目录 梯度累积什么是梯度累积如何理解理解梯度累积梯度累积的工作原理 梯度累积的数学原理梯度累积过程如何实现梯度累积 梯度累积的可视化 梯度累积 什么是梯度累积 随着深度学习模型变得越来越复杂,模型的训练通常需要更多的计算资源,特别是在训…

深度学习笔记_10YOLOv8系列自定义数据集实验

1、mydaya.yaml 配置方法 # 这里分别指向你训练、验证、测试的文件地址,只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应 # 训练集、测试集、验证机文件路径,可以是分类好的TXT文件,也可以直接是图片文件夹路径 train: # t…

Litedram仿真验证(四):AXI接口完成板级DDR3读写测试(FPGA-Artix7)

目录 日常唠嗑一、仿真中遗留的问题二、板级测试三、工程获取及交流 日常唠嗑 接上一篇Litedram仿真验证(三):AXI接口完成仿真(FPGA/Modelsim)之后,本篇对仿真后的工程进行板级验证。 本次板级验证用到的开…

学成在线 - 第3章任务补偿机制实现 + 分块文件清理

7.9 额外实现 7.9.1 任务补偿机制 问题:如果有线程抢占了某个视频的处理任务,如果线程处理过程中挂掉了,该视频的状态将会一直是处理中,其它线程将无法处理,这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

Layer1 公链竞争破局者:Sui 生态的全面创新之路

随着 Sui 生态逐渐在全球范围内树立起声望,并通过与 Revolut 等前沿金融科技平台合作,推广区块链教育与应用,Sui 生态的未来发展方向已成为业界瞩目的焦点。如今,Sui 的总锁定价值已攀升至 5.93 亿美元,充分展示了其在…

分布式架构的演技进过程

最近看了一篇文章,觉得讲的挺不错,就借机给大家分享一下。 早期应用:早期的应用比较简单,访问人数有限,大部分的开发单机就能完成。 分离模型:在业务发展后,用户数量逐步上升,服务器的性能出现瓶颈;就需要将应用和数据分开存储,避免相互抢占资源。 缓存模式:随着系…

历代著名画家作品赏析-东晋顾恺之

中国历史朝代顺序为:夏朝、商朝、西周、东周、秦朝、西楚、西汉、新朝、玄汉、东汉、三国、曹魏、蜀汉、孙吴、西晋、东晋、十六国、南朝、刘宋、南齐、南梁、南陈、北朝、北魏、东魏、北齐、西魏、北周、隋,唐宋元明清,近代。 一、东晋著名…

现身说法暑期三下乡社会实践团一个好的投稿方法胜似千军万马

作为一名在校大学生,去年夏天我有幸参与了学院组织的暑期大学生三下乡社会实践活动,这段经历不仅让我深入基层,体验了不一样的生活,更是在新闻投稿的实践中,经历了一次从传统到智能的跨越。回忆起那段时光,从最初的邮箱投稿困境,到后来智慧软文发布系统的高效运用,每一步都刻印…

顺序栈的操作

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝既然选择了远方,当不负青春…

什么是DDoS攻击?DDoS攻击的原理是什么?

一、DDoS攻击概念 DDoS攻击又叫“分布式拒绝服务”(Distributed DenialofService)攻击,它是一种通过控制大量计算机、物联网终端或网络僵尸(Zombie)来向目标网站发送大量请求,从而耗尽其服务器资源,导致正常用户无法访…

WEB基础--JDBC操作数据库

使用JDBC操作数据库 使用JDBC查询数据 五部曲:建立驱动,建立连接,获取SQL语句,执行SQL语句,释放资源 建立驱动 //1.加载驱动Class.forName("com.mysql.cj.jdbc.Driver"); 建立连接 //2.连接数据库 Stri…

【3dmax笔记】026:挤出和壳修改器的使用

文章目录 一、修改器二、挤出三、壳 一、修改器 3ds Max中的修改器是一种强大的工具,用于创建和修改复杂的几何形状。这些修改器可以改变对象的形状、大小、方向和位置,以生成所需的效果。以下是一些常见的3ds Max修改器及其功能: 挤出修改…

Google Earth Engine谷歌地球引擎计算遥感影像在每个8天间隔内的多年平均值

本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,求取多年时间中,遥感影像在每1个8天时间间隔内的多年平均值的方法。 本文是谷歌地球引擎(Google Earth Engine,GEE)系列教学文章…

神经网络案例实战

🔎我们通过一个案例详细使用PyTorch实战 ,案例背景:你创办了一家手机公司,不知道如何估算手机产品的价格。为了解决这个问题,收集了多家公司的手机销售数据:这些数据维度可以包括RAM、存储容量、屏幕尺寸、…

JavaScript数字分隔符

● 如果现在我们用一个很大的数字,例如2300000000,这样真的不便于我们进行阅读,我们希望用千位分隔符来隔开它,例如230,000,000; ● 下面我们使用_当作分隔符来尝试一下 const diameter 287_266_000_000; console.log(diameter)…

论文分享[cvpr2018]Non-local Neural Networks非局部神经网络

论文 https://arxiv.org/abs/1711.07971 代码https://github.com/facebookresearch/video-nonlocal-net 非局部神经网络 motivation:受计算机视觉中经典的非局部均值方法[4]的启发,非局部操作将位置的响应计算为所有位置的特征的加权和。 非局部均值方法 NLM&#…

Python实现Chiikawa

写在前面 哈?呀哈!本期小编给大家素描版Chiikawa! 主人公当然是我们可爱的吉伊、小八以及乌萨奇啦~ Chiikawa小小可爱 《Chiikawa》是一部来自日本的超萌治愈系漫画与动画作品,由作者秋田祯信创作。"Chiikawa"这个名字…

【Kolmogorov-Arnold网络 替代多层感知机MLPs】KAN: Kolmogorov-Arnold Networks

KAN: Kolmogorov-Arnold Networks 论文地址 代码地址 知乎上的讨论(看一下评论区更正) Abstract Inspired by the Kolmogorov-Arnold representation theorem, we propose Kolmogorov-Arnold Networks (KANs) as promising alternatives to Multi-Layer…

支持LLM的Markdown笔记;ComfyUI-HiDiffusion图片生成和对图像进行高质量编辑

✨ 1: ComfyUI-HiDiffusion ComfyUI-HiDiffusion是一个为HiDiffusion技术使用而定制的节点。HiDiffusion技术是专门用于在计算机视觉和图像处理中生成和改进图片质量的先进算法。该技术通常应用于图像的超分辨率、去噪、风格转换等方面。 ComfyUI-HiDiffusion的主要特点包含提…
最新文章