RTC时钟

目录

一、STM32F407内部RTC硬件框图,主要由五大部分组成:

二、硬件相关引脚

三、具体代码设置步骤

四、了解其它知识点


一、STM32F407内部RTC硬件框图,主要由五大部分组成:

① 时钟源 

(1)LSE:一般我们选择 LSE,即外部 32.768KHz 晶振作为时钟源(RTCCLK)。外部晶振具有精度高的优点。

(2)HSE:分频后的 HSE 可以作为备选使用的时钟源。

(3)LSI:LSI 是 STM32 芯片内部的低速 RC 振荡器,频率约 32 KHz,缺点是精度较低,一般不使用。

② 预分频器 

        预分配器(RTC_PRER)分为 2 个部分:一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。另一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 于是我们只需要设置: PREDIV_A=0X7F,即 128 分频;PREDIV_S=0XFF,即 256 分频,即可得到 1Hz(1秒) 的 Fck_spre,用于更新日历。

③ 时间和日期相关寄存器

        该部分包括三个影子寄存器, RTC_SSR(亚秒)、 RTC_TR(时间)、 RTC_DR(日期)。实时时钟一般表示为:时/分/秒/亚秒。RTC_TR 寄存器用于存储时/分/秒时间数据,可读可写(即可设置或者获取时间)。RTC_DR 寄存器用于存储日期数据,包括年/月/日/星期,可读可写(即可设置或者获取日期)。RTC_SSR 寄存器用于存储亚秒级的时间,这样我们可以获取更加精确的时间数据。 

        不过需要注意的是:时间和日期都是以 BCD 码的格式存储的,读出来要转换一下,才可以得到十进制的数据。

        亚秒的实现:当影子RTC_SSR 寄存器递减到 0 的时候,会使用 PREDIV_S 的值重新装载 PREDIV_S,而PREDIV_S 一般为 255;而影子RTC_SSR 寄存器递减频率为前面7位异步分频器分频出来的频率为256Hz。这样,我们得到亚秒时间的精度是: 1/256 秒,即 3.9ms 左右。

④ 可编程闹钟 

        STM32F407 提供两个可编程闹钟:闹钟 A(ALARM_A)和闹钟 B(ALARM_B)。通过RTC_CR 寄存器的 ALRAE 和 ALRBE 位置 1 来使能闹钟。当亚秒、秒、分、小时、日期分别与闹钟寄存器 RTC_ALRMASSR/RTC_ALRMAR 和 RTC_ALRMBSSR/RTC_ALRMBR 中的值匹配时,则可以产生闹钟(需要适当配置)。本章我们将利用闹钟 A 产生闹铃,即设置RTC_ALRMASSR 和 RTC_ALRMAR 即可。 

⑤ 周期性自动唤醒 

        STM32F407 的 RTC 不带秒钟中断了,但是多了一个周期性自动唤醒功能。周期性唤醒功能,由一个 16 位可编程自动重载递减计数器(RTC_WUTR)生成,可用于周期性中断/唤醒。 

二、硬件相关引脚

(1)LSE时钟(32.768kHz)

        PC14 和 PC15 可用作 GPIO 或 LSE 引脚

(2) VBAT要有电压:1.65V~3.6V 

(3) RTC其它相关引脚:PC13 可用作 GPIO 或 RTC_AF1 引脚,PI8 可用作 RTC_AF2 

三、具体代码设置步骤

1、初始化 RTC

(1) 在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护;

(2) 初始化日期格式(HourFormat);RTC_PRER异步(AsynchPrediv = 0x7F)和同步寄存器(SynchPrediv = 0xFF);OutPut 用来选择要连接到 RTC_ALARM 输出的标志;OutPutPolarity 用来设置 RTC_ALARM 的输出极性,与 Output 成员变量配合使用;OutPutType 用来设置 RTC_ALARM 的输出类型为开漏输出还是推挽输出,与成员变量 OutPut 和 OutPutPolarity 配合使用。

(3) 读出bkr(0)寄存器的值,判断是否被修改过,如果修改过,说明电池有重新上电,要重新设置时间和日期。

2、配置WAKE UP中断,1秒钟中断一次:

3、获取时间和日期

四、了解其它知识点

1、BKP的作用

        当Vdd关闭时,这些寄存器由VBAT供电,因而系统复位时,这些寄存器不会复位,并且当器件在低功耗模式下工作时,寄存器的内容仍然有效。可以理解为,只有后备电池不掉电,备份寄存器的都不会恢复默认值;用于判断电池是否掉过电,如果掉过电,需要重新设定时间。

        常用,例如,RTC程序中,我们向DR1写入0x5050,开机读出寄存器值看是否有改变,检测是否已经配置过RTC,如果不是写入的值,说明电池有掉过电,需要重新设定时间和日期。

2、有些芯片自带的RTC,会是有整个完整日历相关的寄存器(如GD32F407VET6);而有些只有一个秒计时器,需要软件自己去做日历(如GD32F303VE);

3、无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内, RTC 便不会停止工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI稳定检索会议】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

#往届均已成功检索# 投稿时邀请码请填H8053 第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024) 2024 5th International Conference on Big Data & Artificial Intelligence & Software Engineering 2024年09月20-22日 | 中国温州 &g…

16.Qt 工具栏生成

目录 前言: 技能: 内容: 1. 界面添加 2. 信号槽 功能实现 参考: 前言: 基于QMainWindow,生成菜单下面的工具栏,可以当作菜单功能的快捷键,也可以完成新的功能 直接在UI文件中…

Java并发基础:ConcurrentSkipListSet全面解析!

内容概要 ConcurrentSkipListSet类在多线程环境下,它能够轻松应对大量的插入、删除和查找操作,同时保持数据的完整性和一致性,其内部基于跳表数据结构的实现,确保了即使在处理大规模数据时,也能具有出色的性能表现。 …

第二篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:深度解读pyttsx3支持多种语音引擎

传奇开心果短博文系列 系列短博文目录Python的文本和语音相互转换库技术点案例示例系列 短博文目录前言一、三种语音引擎支持介绍和示例代码二、SAPI5引擎适用场景介绍和示例代码三、nsss引擎适用场景介绍和示例代码四、eSpeak适用场景介绍和示例代码五、归纳总结 系列短博文目…

计算机丢失mfc140.dll怎么安装?多种方法轻松搞定mfc140.dll问题

​Mfc140.dll文件的丢失可能会引发一系列系统运行问题。作为Microsoft Visual C Redistributable Package的重要组成部分,Mfc140.dll在许多应用程序的正常运行中扮演着关键角色。当这个动态链接库文件缺失时,可能会导致软件启动失败、运行不稳定、功能受…

.NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库

一、效果 记录日志为文档 记录日志到数据库 二、添加NuGet包 三、log4net.config代码配置 <?xml version"1.0" encoding"utf-8" ?> <log4net><!-- Debug日志 --><appender name"RollingFileDebug" type"log4net…

林浩然与杨凌芸的Java集合奇遇记

林浩然与杨凌芸的Java集合奇遇记 The Java Collection Chronicles of Lin Haoran and Yang Lingyun 在一个充满代码香气的午后&#xff0c;程序员男主角林浩然正在他的编程世界里挥舞着键盘剑&#xff0c;探索Java王国中的神秘宝藏——集合。而我们的女主角杨凌芸&#xff0c;作…

基于Spring Boot的协力服装厂服装生产管理系统,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1759135037462228993

缩小ppt文件大小的办法

之前用别人模版做了个PPT&#xff0c;100多M,文件存在卡顿问题 解决办法&#xff1a; 1.找到ppt中哪个文件过大&#xff0c;针对解决 2.寻找视频/音频文件&#xff0c;减少体积 3.字体文件是不是过多的问题。 一、文件寻找的内容步骤&#xff1a; 步骤&#xff1a; 1.把p…

在beforeUpdate中调用了请求数据接口,修改了初始数据造成死循环

在beforeUpdate中调用了请求数据接口&#xff0c;修改了初始数据造成死循环 问题&#xff1a; 不要在beforeUpdate和updated中更改数据&#xff0c;会造成死循环&#xff1b; 原因&#xff1a; 当数据更改就会走这个钩子&#xff0c;而你在里面进行数据更改又会走这个钩子&…

定制你的【Spring Boot Starter】,加速开发效率

摘要&#xff1a; 本文将介绍如何创建一个自定义的 Spring Boot Starter&#xff0c;让您可以封装常用功能和配置&#xff0c;并在多个 Spring Boot 项目中共享和重用。 1. 简介 Spring Boot Starter 是 Spring Boot 框架中的一种特殊的依赖项&#xff0c;它用于快速启动和配置…

机器学习 | 实现图像加密解密与数字水印处理

目录 实现窗口可视化 数字图像加密 窗口布局设置 基于混沌Logistic的图像加密 基于三重DES的图像加密 数字图像解密 窗口布局设置 基于混沌Logistic的图像解密 基于三重DES的图像解密 基于LSB的数字水印提取 窗口布局设置 水印的嵌入与提取 实现窗口可视化 这里…

【IO流】FileInputStream 字节输入流

FileInputStream 字节输入流 1. 概述2. 作用3. 书写步骤4. 读取方法5. 文件拷贝6. 注意事项 1. 概述 FileInputStream 是 Java IO 包中的一个类&#xff0c;它是字节输入流的一种。它用于从文件中读取数据&#xff0c;以字节为单位进行读取。 使用 FileInputStream 可以完成以…

数据分析(一) 理解数据

1. 描述性统计&#xff08;summary&#xff09; 对于一个新数据集&#xff0c;首先通过观察来熟悉它&#xff0c;可以打印数据相关信息来大致观察数据的常规特点&#xff0c;比如数据规模&#xff08;行数列数&#xff09;、数据类型、类别数量&#xff08;变量数目、取值范围…

C++--Linux基础使用

文章目录 几个简单命令开机关机重启查看当前目录切换当前目录列出当前目录下的目录和文件列出指定目录下的目录和文件清屏查看/设置时间 目录和文件目录概要目录详细说明相对路径和绝对路径 上古神器vi创建/打开文件vi 的两种模式vi 的常用命令 用户管理组管理用户管理修改用户…

【C++学习手札】多态:掌握面向对象编程的动态绑定与继承机制(初识)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;世界上的另一个我 1:02━━━━━━️&#x1f49f;──────── 3:58 &#x1f504; ◀️ ⏸ ▶️ ☰ &am…

上门回收小程序开发,互联网下发展机遇

在当下生活水平大幅度上升发展下&#xff0c;回收成为了人们日常生活中的一部分。 如今&#xff0c;随着互联网的快速发展&#xff0c;回收行业也进行了升级换代&#xff0c;由传统的线下回收门店到回收箱在到当下的线上互联网回收模式&#xff0c;迈向了“互联网废品回收”的…

Android下SF合成流程重学习之GPU合成

Android下SF合成流程重学习之GPU合成 引言 SurfaceFlinger中的图层选择GPU合成(CLIENT合成方式)时&#xff0c;会把待合成的图层Layers通过renderengine(SkiaGLRenderEngine)绘制到一块GraphicBuffer中&#xff0c;然后把这块GraphicBuffer图形缓存通过调用setClientTarget传递…

Portainer安装/快速上手

前置&#xff1a; 管理docker容器的工具 Portainer: Container Management Software for Kubernetes and Docker https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 官网安装教程 Install Portainer CE with Docker on Linux - Portainer Documentat…

如何将阿里云服务器迁移

&#x1f4d1;前言 本文主要是如何将阿里云服务器迁移实现数据转移的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️** &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…