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 便不会停止工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Electron实战之进程间通信

进程间通信(IPC)并非仅限于 Electron,而是源自甚至早于 Unix 诞生的概念。尽管“进程间通信”这个术语的确创造于何时并不清楚,但将数据传递给另一个程序或进程的理念可以追溯至 1964 年,当时 Douglas McIlroy 在 Unix…

央视年味大片浓情上映,四位主持人首次因酒“合体”

执笔 | 尼 奥 编辑 | 萧 萧 年,中国人最眷念的味道。年味,独属于中国人的一种文化传承。 14亿中国人,是14亿份不同的中国年味。 五粮浓香 ,赞99 让“年味浓起来”,2月1日,央视新闻上线《年味分之一…

【JavaEE】IP协议

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

裁员不可怕,可怕的是软件测试行业在发生巨变,而你却原地踏步

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

【Java】Static关键字与类的实例化

关键字:static 作用:主要用于内存管理 范围:可以用在变量、方法、代码块和嵌套类上。java关键字属于类,但不是类的实例。 类的成员变量包括: 【静态变量/类变量】:指被static修饰的成员变量 运行时&#…

Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 霍尔特季节性平滑模型是指数平滑技术的一种扩展形式,由E. S. Holt和P. R. Winters分别独立…

C语言系列-编译和链接

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” 目录 翻译环境和运行环境 编译环境 预处理(预编译) 编译 词法分析 语法分析 语义分析 汇编 链接 运行环境 翻译环境和运行环境 在 ANSIC 的任何一种实…

【Qt】图形视图框架 之 坐标

QGraphicsView移动图元/场景以及坐标转换 QGraphicsView图形视图框架使用(一)坐标变换 1.继承 QGraphicsProxyWidget 类 虚函数 mousePressEvent、mouseReleaseEvent 的参数 QGraphicsSceneMouseEvent event->pos() 是item坐标系*下的坐标,不是scene场景坐标系下…

鸿蒙新手入门-环境准备问题解析

Node.js版本与API配套关系 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.…

宠物赛道都卷出了哪些花样?媒介盒子分享

如今的宠物市场,已经从让宠物吃饱喝足的基本生理需求,拓展到五花八门的精神需求,与“马斯洛需求定理”高度一致。商家们看到宠物经济的潜力,不再满足于给人类造节,给毛孩子造节也是重中之重,今天媒介盒子就…

【Java EE初阶十六】网络原理(一)

在网络原理中主要学习TCP/IP四层模型中的重点网络协议 1. 应用层 1.1 应用程序与协议 应用层是和程序员接触最密切的; 应用程序:在应用层这里,很多时候都是程序员自定义应用层协议(步骤:1、根据需求,明确…

Faker遭受DDOS攻击,为什么它一直存在,当遇到ddos攻击怎么办?

二十年前中国红客们就在用的DDOS攻击,直到现在还依然是黑客们最爱的攻击方法,为什么它一直存在? Faker各位小伙伴们自然是相当熟悉了,素有着英雄联盟第一人之称的Faker,其所拥有的荣誉让无数职业选手望其项背&#xf…

如何理解CSS的边框宽度?

CSS 边框宽度学习手记 CSS 边框宽度小概念 在CSS的世界里,border-width这个属性真的很实用,它能帮我指定HTML元素四周边框的宽度。这个宽度嘛,可以用像素px、点pt、厘米cm、相对单位em这些来表示,很方便吧!还有呢&am…

Unity3D Shader 素描风格渲染管线实现详解

前言 在游戏开发中,渲染效果是非常重要的一部分,它可以直接影响游戏的视觉效果和玩家的体验。而素描风格的渲染效果是一种非常独特和有趣的风格,可以为游戏增添一种艺术氛围。在Unity3D中,可以通过编写Shader来实现素描风格的渲染…

三坐标测量机|全自主研发,实现高精度三维尺寸测量

三坐标测量机广泛应用在工业生产中,不仅可以提高生产效率,还能保证产品质量的稳定性。 基本原理和作用介绍 三坐标测量机是一种基于三维坐标系的精密测量仪器,可精确测量物体的尺寸、形状和位置。基本原理是利用传感器测量被测物体在三个方…

STM32学习笔记(七) —— DMA传输(MTM)

DMA,全称是Direct Memory Access(直接内存访问)。可以在存储器和存储器之间或者外设和存储器之间传输数据,而不需要CPU的干预,这样可以节省CPU的资源,提高工作效率。 1.功能框图 STM32F103RCT6有两个DMA控…

外汇天眼:8个平台被打击,有的因诈骗被处罚!

上周,澳大利亚证券和投资委员会(ASIC)取消了总部位于悉尼的Brava Capital的澳大利亚金融服务许可证(AFSL),意大利公司和交易委员会CONSOB则将6个非法投资平台网站列入黑名单。另外,Reiwa-Capita…

蓝桥杯:C++队列、优先队列、链表

C普通队列 算法竞赛中一般用静态数组来模拟队列,或者使用STL queue。使用C的STL queue时,由于不用自己管理队列,因此代码很简洁。队列的部分操作如下。 C优先队列 很多算法需要用到一种特殊的队列:优先队列。它的特点是最优数据…

C++智能指针的知识!

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 大家好呀,我是PingdiGuo_guo,今天我们来学习一下智能指针。 文章目录 1.智能指针的概念 2.智能指针的思想 3.智能指针的作用 3.1 自动内存管理 3.2 共享所有权 3.3 避免悬挂指针…

春节如此“热辣滚烫”,可别把赚钱的机会都让给别人!2024如果创业适合干什么,2024创业新风口

春节期间,在国外抨击我们的旅客不出去旅行,造成了1300亿损失的时候,国内的消费可谓是“热辣又滚烫”,一片勃勃生机的景象。 各个地方纷纷的“亮底牌、放大招”,举办各式各样丰富多彩的文化活动,还进行“农…