STM32使用RTC时钟

本文介绍了STM32的RTC时钟模块,包括其工作原理、组成部分,以及如何通过CubeMX进行配置。RTC是一个独立的定时器,拥有预分频模块和32位计数器,能够提供长达136年的时钟计数。在设置RTC前,需要解除备份区域的写保护。文章还提到了RTC的闹钟功能和中断产生。接着,通过CubeMX配置了RCC、RTC以及NVIC中断,并涉及了串口和时钟配置。
摘要由CSDN通过智能技术生成

一、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>&copy; 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 ------------------------------------------------------------------*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值