STM32的RTC时钟的获取

article/2025/8/6 21:04:07

STM32的RTC时钟的获取


硬件
1.STM32F103RCT6最小系统板(mini)
2.下载器(我这里使用的ST-linkV2)
3.纽扣电池
软件
1.keil5 (MDK)
2.STM32CuBe MX(因为比较方便嘛,其实也可以拖库)

配置基本的参数:时钟、下载配置、串口(用于显示,记得重写fputc函数和使用微库Use MicroLIB)
在这里插入图片描述

生成keil程序后,首先找到rtc.c中的RTC_Init进行修改(如果不更改的话,会出现复位后出时间重新计算了)
内容如下(来自链接:https://blog.csdn.net/as480133937/article/details/105741893)

 void MX_RTC_Init(void)
{/* USER CODE BEGIN RTC_Init 0 */RTC_TimeTypeDef time;   //时间结构体参数RTC_DateTypeDef datebuff;   //日期结构体参数/* USER CODE END RTC_Init 0 */RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef DateToUpdate = {0};/* USER CODE BEGIN RTC_Init 1 */__HAL_RCC_BKP_CLK_ENABLE();       //开启后备区域时钟__HAL_RCC_PWR_CLK_ENABLE();		  //开启电源时钟/* USER CODE END RTC_Init 1 *//**Initialize RTC Only */hrtc.Instance = RTC;hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;if (HAL_RTC_Init(&hrtc) != HAL_OK){Error_Handler();}/* USER CODE BEGIN Check_RTC_BKUP */if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!= 0x5051){/* USER CODE END Check_RTC_BKUP *//**Initialize RTC and set the Time and Date */sTime.Hours = 0x14;sTime.Minutes = 0x30;sTime.Seconds = 0x0;if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}DateToUpdate.WeekDay = RTC_WEEKDAY_SATURDAY;DateToUpdate.Month = RTC_MONTH_APRIL;DateToUpdate.Date = 0x25;DateToUpdate.Year = 0x20;if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}/* USER CODE BEGIN RTC_Init 2 */__HAL_RTC_SECOND_ENABLE_IT(&hrtc,RTC_IT_SEC);	 //开启RTC时钟秒中断datebuff = DateToUpdate;  //把日期数据拷贝到自己定义的data中HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, 0x5051);//向指定的后备区域寄存器写入数据HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR2, (uint16_t)datebuff.Year);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR3, (uint16_t)datebuff.Month);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR4, (uint16_t)datebuff.Date);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR5, (uint16_t)datebuff.WeekDay);}else{datebuff.Year    = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR2);datebuff.Month   = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR3);datebuff.Date    = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR4);datebuff.WeekDay = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR5);DateToUpdate = datebuff;if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK){Error_Handler();}__HAL_RTC_SECOND_ENABLE_IT(&hrtc,RTC_IT_SEC);	 //开启RTC时钟秒中断		}
}

然后声明结构体

RTC_DateTypeDef Get_Data;  //获取日期结构体
RTC_TimeTypeDef Get_Time;   //获取时间结构体

然后进行时间获取

HAL_RTC_GetDate(&hrtc, &Get_Data, RTC_FORMAT_BIN);//获取日期
HAL_RTC_GetTime(&hrtc, &Get_Time, RTC_FORMAT_BIN); //获取时间结
获取后的日期分别为:Get_Data.Year//年:需要加上2000 Get_Data.Month//月Get_Data.Date//日Get_Data.WeekDay//星期数
获取后的日期分别为:
Get_Time.Hours//时
Get_Time.Minutes//分
Get_Time.Seconds//秒
可以根据串口打印出来
printf("%02d/%02d/%02d  星期:%d\r\n",2000 + Get_Data.Year, Get_Data.Month, Get_Data.Date,Get_Data.WeekDay);
printf("%02d:%02d:%02d\r\n",Get_Time.Hours, Get_Time.Minutes, Get_Time.Seconds);

最后的效果如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/pV4OpeRu.shtml

相关文章

STM32 RTC时钟掉电日期不更新 STM32 HAL库RTC时钟配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32 RTC时钟掉电日期不更新 & STM32 HAL库RTC时钟配置 一、STM32CubeMX RTC配置二、RTC初始化三、RTC日期掉电不更新(F1...这里暂时只考虑F103,其他系列未测…

STM32CubeMX | 基于STM32使用HAL库驱动RTC时钟及闹钟功能

STM32CubeMX | 基于STM32使用HAL库驱动RTC时钟及闹钟功能 目录 STM32CubeMX | 基于STM32使用HAL库驱动RTC时钟及闹钟功能(一)工程配置(二)代码编写(三)运行效果 本章实现效果: RTC时钟获取周期…

STM32G4之RTC实时时钟

文章目录 前言一、RTC介绍二、STM32CubeMX配置三、部分源码总结 前言 一、RTC介绍 STM32 的 RTC 外设(Real Time Clock) ,实质是一个掉电后还继续运行的定时器。STM32G4 的 RTC,是一个独立的 BCD 定时器/计数器。 RTC 提供一个日历…

什么是RCT实时时钟?(STM32中RTC时钟源)

什么是RCT(Real Time Clock,实时时钟)? 一、RTC时钟简介 RTC(Real Time Clock,实时时钟)是指安装在电子设备或实现其功能的IC(集成电路)上的时钟,一般会是集成电路&am…

STM32:RTC实时时钟原理

RTC (Real Time Clock):实时时钟 RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟,两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 两个32位寄存器包含二进码十进制格式…

STM32物联网项目-RTC时钟

RTC时钟 RTC简介 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系…

十九、RTC实时时钟

一、.RTC实时时钟工作框图 RTC 由两个主要部分组成,第一部分(APB1 接口)用来和 APB1 总线相连。此单元还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。APB1 接口由 APB1 总线时钟驱动,用来与 APB1 总线连接。 RTC_PRL设置100&a…

STM32 RTC时钟读取时间

文章目录 一、RTC简介1.1 RTC1.2 RTC特征1.3 RTC原理框图1.4 RTC工作流程1.5 RTC时钟选择1.6 RTC复位过程1.7 RTC中断 二、CubeMX配置2.1 RCC配置2.2 SYS配置2.3 RTC配置2.4 串口配置2.5 时钟配置2.6 生成项目代码 三、代码编写3.1 重写printf3.2 RTC_HAL库函数/*设置系统时间*…

STM32 RTC实时时钟

我用的是STM32库函数:两个知识点: 一、RTC时钟框图分析(重要) 二、时间是怎样显示出来的(简析) 一、RTC时钟框图分析(重要) 先熟悉一下几个知识点: …

STM32之RTC时钟,闹钟,日历

RTC时钟的一些功能介绍 RTC时钟即实时时钟,它提供了用于管理所有低功耗模式的自动唤醒单元,还提供了具有可编程闹钟中断功能的日历时钟/日历。 并且可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时…

深入学习RTC时钟库 DS1302

❤️博主介绍❤️ 😬 作者:单片机菜鸟哥 👉火爆博客:ESP8266 Arduino教程 零基础从入门到熟悉Arduino平台下开发ESP8266,同时会涉及网络编程知识。专栏文章累计超过60篇,分为基础篇、网络篇、应用篇、高级篇…

深入学习 RTC时钟库 DS3231

❤️博主介绍❤️ 😬 作者:单片机菜鸟哥 👉火爆博客:ESP8266 Arduino教程 零基础从入门到熟悉Arduino平台下开发ESP8266,同时会涉及网络编程知识。专栏文章累计超过60篇,分为基础篇、网络篇、应用篇、高级篇…

rtc时钟

一、设计效果 配置RTC时钟,初始化为2000年1月1日00:00:00;通过RTC时钟秒中断串口每秒打印一次当前时刻,并切换一次流水灯状态;配置闹铃为10:00:05,在闹铃中断中每秒切换一次蜂鸣器状态闹铃,直到按KEY1关闭…

RTC时钟实现实时日历

文章目录 1、RTC时钟简介1.2、初识RTC1.2、相关寄存器 2、创建项目23、完善代码4、总结 1、RTC时钟简介 1.2、初识RTC 1、简介: RTC—real time clock,实时时钟,主要包含日历、闹钟和自动唤醒这三部分的功能,其中的日历功能我们使…

STM32之RTC时钟

前言 了解实时时钟RTC的原理。STM32芯片自带RTC,因此不须像其他MCU需外接RTC模块。请编程实现STM32的日历读取、设置和输出。要求: 1)读取RTC初始时间,验证是否为 1970年1月1日零分零秒; 2)将RTC时间调整为…

【STM32】HAL库 STM32CubeMX教程十三---RTC时钟

前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软…

【STM32】详解RTC实时时钟的概念和配置示例代码

一、什么是RTC RTC(Real-time Clock):实时时钟,本质上是一个支持BCD编码的定时器/计数器。主电源断电后能够由电池供电,使其时钟跳转依然正常。 二、STM32F4芯片内的RTC功能 ①日历时钟(时分秒、年月日、星期) ②两个闹…

android小错误:Failure retrieving text 0x7f050001 in package

1.在启动android应用程序的过程中,logcat打印如下的错误: 报错的原因:资源的id没有找到。资源在R.java文件中,找到0x7f050001 对应的定义 R.java public static final int AppTheme0x7f050001; AppTheme这个文件在AndroidMan…

Windows7系统蓝屏-解决办法, 错误代码:0x0000007F

1.电脑突然蓝屏提示stop:0x0000007F,如下图所示: 2.故障排除 重启电脑,一直按F8,进入“安全模式”,如能正常进入系统,查看系统错误日志。针对系统记录的错误日志,解决问题。如下图,…

java.lang.IllegalArgumentException No view found for id 0x7

java.lang.IllegalArgumentException No view found for id 0x7 布局上找不到这个View,看下ERROR的地方,可以看到是因为Container找不到因此报错了。 从布局入手,参考了很多文章主要分为以下两种原因 1 Fragment 嵌套了 Fragment 例如&…