• 正文
    • 1、RTC时钟
    • 2、STM32的RTC
    • 03.系统配置
    • 04.代码使用
  • BOM清单
  • 相关推荐
申请入驻 产业图谱

STM32中的实时时钟配置与使用!

01/26 09:40
550
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1、RTC时钟

RTC是Real-Time-Clock时钟的缩写即实时时钟,其主要功能是提供准确的日期和时间信息。即使系统的主电源关闭,RTC 时钟也能依靠备用电源(如电池)继续运行,以保证时间的连续性。

当我们的设备断电之后,第二次上电时,即可根据RTC时钟模块来获得当前的时间。

RTC芯片经过这么多年的发展已经非常成熟,市场上轻轻松松就可以找到一款RTC模块。

而在单片机中,部分单片机也集成了内部RTC外设。本期我们就以STM32为例介绍如何使用STM32的RTC外设。

本期硬件STM32F103C8T6最小系统板

2、STM32的RTC

在芯片手册中介绍到,我们可以通过改变计数值来改变系统的日期和时间。并且RTC时钟的数据存在于备份域,并不会受到复位和断电的影响。

该部分主要介绍了RTC时钟的主要特性,我们主要关注两条,首先是超长的计时数以及三条中断:报警中断,秒中断以及溢出中断

报警中断是当RTC计数值达到我们设置的值时会出现的中断。

秒中断顾名思义是每秒产生的一次中断。

溢出中断是在计数寄存器溢出时发生的中断。

下面让我们来使用一下RTC外设。

03.系统配置

在CubeMX中打开芯片,找到Timers部分,找到RTC时钟。

开启RTC时钟源,开启日历,RTC不输出(其他选项是输出引脚

存储日期使用BCD码而不是二进制码,设置时间和日期。

04.代码使用

可以看到主要的几个RTC函数。并且RTC有几个专门的结构体用来记录时间和日期。

typedef struct{  uint8_t Hours;            /*!< Specifies the RTC Time Hour.                                 This parameter must be a number between Min_Data = 0 and Max_Data = 23 */
  uint8_t Minutes;          /*!< Specifies the RTC Time Minutes.                                 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
  uint8_t Seconds;          /*!< Specifies the RTC Time Seconds.                                 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
} RTC_TimeTypeDef;
typedef struct{  uint8_t WeekDay;  /*!< Specifies the RTC Date WeekDay (not necessary for HAL_RTC_SetDate).                         This parameter can be a value of @ref RTC_WeekDay_Definitions */
  uint8_t Month;    /*!< Specifies the RTC Date Month (in BCD format).                         This parameter can be a value of @ref RTC_Month_Date_Definitions */
  uint8_t Date;     /*!< Specifies the RTC Date.                         This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
  uint8_t Year;     /*!< Specifies the RTC Date Year.                         This parameter must be a number between Min_Data = 0 and Max_Data = 99 */
} RTC_DateTypeDef;

之后调用获取时间的函数我们进行测试。

在while循环中获取时间,注意要把初始化中的设置时间部分给注释掉,不然每次启动都会重置一下时间。还有一点需要注意的是,正常情况下STM32的VBat引脚可以不接,但是要使用RTC时钟,需要外接一颗电池,这样子才能在断电之后依旧维持RTC运行。

BOM清单

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
STM32F103C8T6 1 STMicroelectronics Mainstream Performance line, Arm Cortex-M3 MCU with 64 Kbytes of Flash memory, 72 MHz CPU, motor control, USB and CAN

ECAD模型

下载ECAD模型
$3.6867 查看

相关推荐