RTC简介
实时时钟(RTC)是一个独立的 BCD 定时器/计数器。RTC 提供具有可编程闹钟中断功能的日历时钟/日历。RTC 还包含具有中断功能的周期性可编程唤醒标志。系统可以自动将月份的天数补偿为 28、29(闰年)、30和 31 天。只要芯片的备用电源一直供电,RTC上的时间会一直走。
新建工程
本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。点击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。RTC选择内部唤醒(Internal WakeUp)开启RTC。开启外部低速晶振,PC14,PC15配置。
RTC时钟选择为外部低速晶振(LSE),频率为32.768。
在RTC配置中,设置时间和日期,其他为默认设置。此处设置时间为2016/04/16 1649。
生成报告以及代码,编译程序。
添加应用程序
在rtc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_rtc.h头文件中可以看到rtc时间和日期读写操作函数。 
从操作函数中可以看到,时间和日期是以结构体的形式读写的。所以在main.c文件前面申明两个结构体变量存储读取的时间和日期数据。
/*USERCODEBEGINPV*/ /*Privatevariables--------*/ RTC_DateTypeDefsdatestructure; RTC_TimeTypeDefstimestructure; /*USERCODEENDPV*/
在stm32f7xx_hal_rtc.h头文件中,可以找到RTC_TimeTypeDef,RTC_DateTypeDef这两个结构体的成员变量。
在while循环中添加应用程序,读取当前的时间和日期,并通过串口发送到电脑上显示。
/*USERCODEBEGINWHILE*/
while(1)
{
/*USERCODEENDWHILE*/
/*USERCODEBEGIN3*/
/*GettheRTCcurrentTime,mustgettimefirst*/
HAL_RTC_GetTime(&hrtc,&stimestructure,RTC_FORMAT_BIN);
/*GettheRTCcurrentDate*/
HAL_RTC_GetDate(&hrtc,&sdatestructure,RTC_FORMAT_BIN);
/*DisplaydateFormat:yy/mm/dd*/
printf("%02d/%02d/%02d
",2000+sdatestructure.Year,sdatestructure.Month,sdatestructure.Date);
/*DisplaytimeFormat:hhss*/
printf("%02d:%02d:%02d
",stimestructure.Hours,stimestructure.Minutes,stimestructure.Seconds);
printf("
");
HAL_Delay(1000);
}
/*USERCODEEND3*/
程序中使用HAL_RTC_GetTime(),HAL_RTC_GetDate()读取时间和日期,并保存到结构体变量中,然后通过串口输出读取的时间和日期。注意:要先读取时间再读取日期,如果先读取日期在读取时间会导致读取的时间不准确,一直都是原来设置的时间。
实验效果
编译程序并下载到开发板。打开串口调试助手。设置波特率为115200。串口助手上会显示RTC的时间日期。

审核编辑:汤梓红
-
实时时钟
+关注
关注
4文章
369浏览量
68589 -
计数器
+关注
关注
32文章
2325浏览量
98744 -
定时器
+关注
关注
23文章
3379浏览量
125174 -
RTC
+关注
关注
2文章
674浏览量
72382 -
stm32cubemx
+关注
关注
5文章
290浏览量
17533
原文标题:STM32CubeMX-实时时钟(RTC)
文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
基于STM32CubeMX的实时时钟(RTC)配置
STM32CubeMX-实时时钟(RTC)
stm32f4 RTC实时时钟解析
STM32CubeMX学习笔记(14)——RTC实时时钟使用
STM32CubeMX系列|RTC实时时钟
STM32CubeMX-实时时钟(RTC)
评论