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

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐