一、RTC
STM32 RTC 时钟简介
-
实时时钟( RTC)是一个独立的定时器。 RTC 模块拥有一组连续计数的计数器,在相应软
件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒
后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以
防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域( BKP)写
保护。RTC 由两个主要部分组成(见下图)。第一部分(APB1 接口)用来和 APB1 总线相连。此单元
还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。 APB1 接口由 APB1 总线时钟
驱动,用来与 APB1 总线接口。
另一部分(RTC 核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是 RTC 的
预分频模块,它可编程产生最长为 1 秒的 RTC 时间基准 TR_CLK。 RTC 的预分频模块包含了
一个 20 位的可编程分频器(RTC 预分频器)。如果在 RTC_CR 寄存器中设置了相应的允许位,
则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。第二个模块是一个 32 位的可编程计数
器,可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记录 4294967296
秒,约合 136 年左右,作为一般应用,这已经是足够了的。
RTC 还有一个闹钟寄存器 RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与
存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许 -
实时时钟( RTC)是一个独立的定时器。 RTC 模块拥有一组连续计数的计数器,在相应软
件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒
后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以
防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域( BKP)写
保护。
RTC 由两个主要部分组成(见下图)。第一部分(APB1 接口)用来和 APB1 总线相连。此单元
还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。 APB1 接口由 APB1 总线时钟
驱动,用来与 APB1 总线接口。
另一部分(RTC 核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是 RTC 的
预分频模块,它可编程产生最长为 1 秒的 RTC 时间基准 TR_CLK。 RTC 的预分频模块包含了
一个 20 位的可编程分频器(RTC 预分频器)。如果在 RTC_CR 寄存器中设置了相应的允许位,
则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。第二个模块是一个 32 位的可编程计数
器,可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记录 4294967296
秒,约合 136 年左右,作为一般应用,这已经是足够了的。
RTC 还有一个闹钟寄存器 RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与
存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许
位,比较匹配时将产生一个闹钟中断。
二、CubeMX程序实现
-
设置RCC
-
配置RTC
-
同时在NVIC中勾选Enabled
-
配置串口
-
配置时钟
三、代码
- main.c
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/