STM32CubeMX-实时时钟(RTC)

发布时间:
来源: 电子工程世界

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的时间日期。


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。