STM32 RTC亚秒

news/2025/2/12 22:36:03/

rtc时钟功能实现:rtc模块在stm32内部,由电池或者主电源供电。如下图,需注意实现时仅需设置一次初始化。
在这里插入图片描述
1、stm32cubemx 代码生成界面设置,仅需开启时钟源和激活日历功能。
在这里插入图片描述
2、生成的代码,需要对时钟进行初始化,仅需一次初始化即可。因此使用RTC_BKP_DR0保存设置状态,等于设置值时就说明设置过了不用再设置:

{/* USER CODE BEGIN RTC_Init 0 *//* USER CODE END RTC_Init 0 */RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef sDate = {0};/* USER CODE BEGIN RTC_Init 1 *//* USER CODE END RTC_Init 1 *//** Initialize RTC Only*/hrtc.Instance = RTC;hrtc.Init.HourFormat = RTC_HOURFORMAT_24;hrtc.Init.AsynchPrediv = 127;hrtc.Init.SynchPrediv = 255;hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;if (HAL_RTC_Init(&hrtc) != HAL_OK){Error_Handler();}/* USER CODE BEGIN Check_RTC_BKUP *//* USER CODE END Check_RTC_BKUP *//** Initialize RTC and set the Time and Date*//* USER CODE BEGIN RTC_Init 2 */if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x50)    {rtc_set_time(19, 17, 56, RTC_HOURFORMAT12_PM);   /* 设置时间, 根据实际时间修改 */rtc_set_date(25, 2, 9, 7);                     /* 设置日期 */HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR0,0x50);}/* USER CODE END RTC_Init 2 */}

3、亚秒的设置,在RTC_TimeTypeDef结构体中有亚秒的属性SubSeconds读出即可,默认状态下不读取,因项目要求5ms记录一次时间所以使用到该属性。
在这里插入图片描述4、函数调用:
在这里插入图片描述

void rtc_get_time(uint8_t *hour, uint8_t *min, uint8_t *sec,uint8_t *subsec, uint8_t *ampm)
{RTC_TimeTypeDef rtc_time_handle;HAL_RTC_GetTime(&hrtc, &rtc_time_handle, RTC_FORMAT_BIN);*hour = rtc_time_handle.Hours;*min = rtc_time_handle.Minutes;*sec = rtc_time_handle.Seconds;*subsec = rtc_time_handle.SubSeconds * 0.39;*ampm = rtc_time_handle.TimeFormat;
}

最后的结果:
在这里插入图片描述


http://www.ppmy.cn/news/1571543.html

相关文章

Python:凯撒密码

题目内容: 凯撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,对应关系如下: 原文:A B C D E F G H I J K L M N O P Q R …

【Elasticsearch】监控与管理:集群监控指标

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

后台管理系统网页开发

CSS样式代码 /* 后台管理系统样式文件 */ #container{ width:100%; height:100%; /* background-color:antiquewhite;*/ display:flex;} /* 左侧导航区域:宽度300px*/ .left{ width:300px; height: 100%; background-color:#203453; display:flex; flex-direction:column; jus…

【C++】23.异常

文章目录 1. 异常的概念及使用1.1 异常的概念1.2 异常的抛出和捕获1.3 栈展开1.4 查找匹配的处理代码1.5 异常重新抛出1.6 异常安全问题1.7 异常规范 2. 标准库的异常 1. 异常的概念及使用 1.1 异常的概念 异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通…

湖南(用户洞察)源点咨询 论用户画像于精准营销之意义作用

湖南源点市场调研咨询认为,精准描摹用户画像是实现有效获客的重要方法。 因为只有通过用户画像,我们才能够持续不断了解用户现阶段的需求,痛点以及偏好。 用户画像不是简单的理解为对人群打标签,而是要通过大量的数据采集和分析…

WPS如何接入DeepSeek(通过第三方工具)

WPS如何接入DeepSeek 一、下载并安装OfficeAI插件二、配置OfficeAI插件三、使用DeepSeek功能 本文介绍如何通过 WPS 的第三方工具调用 DeepSeek 大模型,实现自动化文本扩写、校对和翻译等功能。 一、下载并安装OfficeAI插件 1、访问OfficeAI插件下载地址&#xff…

mysql查缺补漏

好文推荐: 【数据库】快速理解脏读、不可重复读、幻读-CSDN博客 再探幻读!什么是幻读?为什么会产生幻读,MySQL中是怎么解决幻读的?-CSDN博客 引擎 mysql默认引擎:innodb 1.支持行锁 2.支持事务 3.支持外键 索引…

Redis中的某一热点数据缓存过期了,此时有大量请求访问怎么办?

1、提前设置热点数据永不过期 2、分布式中用redis分布式锁(锁可以在多个 JVM 实例之间协调)、单体中用synchronized(锁只在同一个 JVM 内有效) 编写服务类 import com.redisson.api.RLock; import com.redisson.api.RedissonCli…