RTC
关于RTC的详细资料在参考手册中有,如果有需要可以自行阅读,这里只简单介绍。
STM32 的 RTC 外设(Real Time Clock),可以掉电运行(比赛板子没有提供电池所以不能掉电运行),是一个独立的 BCD 定时器/计数器。,可以提供时间,日期,年等信息,自带低功耗管理模式,可以提供一个自动唤醒服务,让单片机从低功耗模式恢复到正常工作模式。可以选择时钟外部或内部时钟源。
一、工程创建
将两个都勾选上即可。
参数配置
参数配置这里,我选择的是内部低速时钟源,当然根据手册还可以选择外部的高速时钟,看个人需求决定。
我选择24小时制,这个看要求了。确认分频和预分频的值,使得RTC的频率1HZ,也就是一秒一次,这里由于选择的是内部的低速时钟,也就是说晶振频率是32768HZ,所以我选择32*1000,可以自由设置。
另外选择的是BIN码也就是直接二进制存储,这里看个人了,在程序中也可以设置,这里也可以不管。年月日和时分秒不再解释。
二、程序设计
分别使用到的两个函数。根据函数内容我们先定义两个结构体。
RTC_TimeTypeDef rtc_time ;
RTC_DateTypeDef rtc_date ;
顾名思义就是对应时间和日期。接下来将参数填入即可。
HAL_RTC_GetTime (&hrtc ,&rtc_time,RTC_FORMAT_BIN) ;
HAL_RTC_GetDate (&hrtc ,&rtc_date,RTC_FORMAT_BIN) ;
这里要注意的一点是,要先获取时间再获取日期,顺序不能颠倒。
如果需要BCD码存储,按照函数定义更改即可,将最后面的RTC_FORMAT_BIN改为RTC_FORMAT_BCD。
函数内部有对应的编码转换。
这里只显示时间。
文中所用的工程我会贴在下面,如有需要可自行下载,如果有疑问或者有什么错误之处还望留言指正。
链接:https://pan.baidu.com/s/14-FBmWPuBdXPR5S3H9UUtQ?pwd=1111
提取码:1111