实时时钟 (RTC) 的工程案例
ARM与嵌入式 2024-06-07

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 16:25:49。

生成报告以及代码,编译程序。

添加应用程序

在rtc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_rtc.h头文件中可以看到rtc时间和日期读写操作函数。

从操作函数中可以看到,时间和日期是以结构体的形式读写的。所以在main.c文件前面申明两个结构体变量存储读取的时间和日期数据。

/* USER CODE BEGIN PV *//* Private variables --------*/RTC_DateTypeDef sdatestructure;RTC_TimeTypeDef stimestructure;/* USER CODE END PV */

在stm32f7xx_hal_rtc.h头文件中,可以找到RTC_TimeTypeDef,RTC_DateTypeDef这两个结构体的成员变量。

在while循环中添加应用程序,读取当前的时间和日期,并通过串口发送到电脑上显示。

/* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */ /* Get the RTC current Time ,must get time first*/ HAL_RTC_GetTime(&hrtc, &stimestructure, RTC_FORMAT_BIN); /* Get the RTC current Date */ HAL_RTC_GetDate(&hrtc, &sdatestructure, RTC_FORMAT_BIN); /* Display date Format : yy/mm/dd */ printf("%02d/%02d/%02d\r\n",2000 + sdatestructure.Year, sdatestructure.Month, sdatestructure.Date); /* Display time Format : hh:mm:ss */ printf("%02d:%02d:%02d\r\n",stimestructure.Hours, stimestructure.Minutes, stimestructure.Seconds); printf("\r\n"); HAL_Delay(1000);}/* USER CODE END 3 */

程序中使用HAL_RTC_GetTime(),HAL_RTC_GetDate()读取时间和日期,并保存到结构体变量中,然后通过串口输出读取的时间和日期。注意:要先读取时间再读取日期,如果先读取日期在读取时间会导致读取的时间不准确,一直都是原来设置的时间。

实验效果

编译程序并下载到开发板。打开串口调试助手。设置波特率为115200。串口助手上会显示RTC的时间日期。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 单片机的未来特性多样化:如何使用单片机进行物联网开发?

    单片机用户(原始设备制造商)面临着三大挑战:通过特性、性能或价格实现终端产品差异化;通过缩短产品上市时间以补偿在复杂设计上日益增长的投资;力求在不增加成本的前提下达成上述两大目标。这些挑战构成了未来单片...

    6分钟前
  • Linux系统内置模块参数的查看

    提问:我想要知道Linux系统中内核内置的模块,以及每个模块有哪些参数。有什么方法可以得到内置模块和设备驱动的列表,以及它们的详细信息呢? 现代Linux内核正在随着时间变化而迅速增长,以支持大量的硬件、文件系 ... 评论:1 分享:0 收藏:4      2015-11-02 08:00      Dan Nanni, geekpi

    17分钟前
  • 在 Linux 上安装 screenfetch

    想在屏幕上显示出你的 Linux 发行版的酷炫标志和基本硬件信息吗?不用找了,来试试超赞的 screenfetch 和 linux_logo 工具。 来看看 screenfetch 吧 screenFetch 是一个能够在截屏中显示系统/主题信息的命令行脚本 ... 评论:7 分享:0 收藏:5      2015-11-02 09:52      Vivek Gite, alim0x

    18分钟前
  • 单片机的工作原理

    一、单片机内部结构分析我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就

    22分钟前
  • 存储设备SCSI接口标准

    SCSI协议介绍SCSI,全称Small Computer System Interface,即小型计算机接口

    6小时前
  • 详细说说车规级汽车MCU

    控制类芯片主要就是指MCU(Microcontroller Unit),即微控制器,又叫单片机,是把CPU的主频与规格做适当缩减,并将存储器、定时器、A/D转换、时钟、I/O端口及串行通讯等多种功能模块和接口集成在单个芯片上。

    昨天
  • 把GuiLite移植到STM32上

    STM32单片机上流畅运行

    昨天
  • SRAM与DRAM有何不同?一文带你轻松搞懂!

    在半导体存储器的发展中,静态存储器(SRAM)由于其广泛的应用成为其中不可或缺的重要一员。 随

    06-14
  • 描述linux io_uring 性能

    先看看性能io_uring 需要内核版本在5.1 及以上才支持,liburing的编译安装 很简单,直接clo

    06-14
  • 工程师对单片机编程的总结

    ller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口。

    06-14
  • 单片机电路晶振不起振原因分析

    一,为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被...

    06-14
  • 节拍器系统模块化结构设计

    1 硬件电路原理 节拍器以AT89C51 单片机为控制中心,由LED 显示模块、调节键盘模块、声音输出模块组成。图1 是节拍器的电路原理图。ATMEL 公司生产的AT89C51 单片机与MCS51指令系统兼容,40 脚结构,是系统的控制中心...

    06-14
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告