stm32f103zet6_RTC_1_介绍

RTC简介

实时时钟是一个独立的定时器

RTC模块拥有一组连续计数的计数器,在相应软件配置下,可 提供时钟日历的功能。

修改计数器的值可以重新设置系统当前的时间和日期。

RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒 后,RTC的设置和时间维持不变。

系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操 作。执行以下操作将使能对后备寄存器和RTC的访问:

        ● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟

        ● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。

主要特性

● 可编程的预分频系数:分频系数最高为220。

● 32位的可编程计数器,可用于较长时间段的测量。

● 2个分离的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟 频率的四分之一以上)。

● 可以选择以下三种RTC的时钟源:

        ─ HSE时钟除以128;高速外部时钟 (HSE)这是以外部晶振作为时钟源,晶振频率可以在4MHz到16MHz之间选择,通常采用8MHz的晶振。

        ─ LSE振荡器时钟;(低速外部时钟 (LSE)以外部晶振作为时钟源,主要提供给实时时钟模块,通常采用32.768KHz的晶振)

        ─ LSI振荡器时钟;低速内部时钟 (LSI)由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。

● 2个独立的复位类型: ─ APB1接口由系统复位;

        ─ RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位(详见6.1.3节)。

● 3个专门的可屏蔽中断:

        ─ 闹钟中断,用来产生一个软件可编程的闹钟中断。

        ─ 秒中断,用来产生一个可编程的周期性中断信号(最长可达1秒)。

         ─ 溢出中断,指示内部可编程计数器溢出并回转为0的状态。

结构图

简化的RTC框图

选择外部低数时钟

低速外部时钟 (LSE)

外接时钟频率为32.768  原因为2的15次方为它  将它分频15次为1秒

复位

  1. 系统复位://设置寄存器复位

    • 当STM32微控制器执行硬复位或软复位时,RTC模块也会被复位。
    • 系统复位可以由外部复位引脚、电源管理模块或软件命令触发。
    • 系统复位后,RTC会重置到其默认状态,例如日历寄存器会被重置到1970年1月1日。
  2. 看门狗复位

    • 如果配置了窗口看门狗(WWDG)或独立看门狗(IWDG),当这些看门狗计数器达到预设的值时,也会触发RTC复位。
    • 这些复位通常用于检测软件运行失控或系统故障。
  3. 掉电复位://外接电源电池断电

    • 当电源电压低于RTC模块的复位阈值时,RTC模块可能会自动复位。
    • 掉电复位通常用于防止在电源电压不足时,RTC模块的寄存器值被破坏。

 RTC的寄存器

  1. RTC_CRH(控制寄存器高)

    • 用于配置RTC的预分频器、闹钟中断、秒中断和唤醒功能的使能。
  2. RTC_CRL(控制寄存器低)

    • 用于控制RTC的启动和停止,以及读取RTC的状态。
  3. RTC_PRLH(预分频器加载寄存器高)和 RTC_PRLL(预分频器加载寄存器低)

    • 用于配置RTC的预分频器,以确定RTC时钟的频率。
  4. RTC_CNTLH(计数器寄存器高)和 RTC_CNTL(计数器寄存器低)

    • 用于存储RTC的秒计数器值。
  5. RTC_ALRH(闹钟寄存器高)和 RTC_ALRL(闹钟寄存器低)

    • 用于配置RTC的闹钟时间。
  6. RTC_DIVH(分频器寄存器高)和 RTC_DIVL(分频器寄存器低)

    • 用于配置RTC的时钟分频器。
  7. RTC_CR(日历寄存器)

    • 用于存储当前的日期和星期信息。
  8. RTC_TI(时间寄存器)

    • 用于存储当前的时间信息,包括小时、分钟和秒。
  9. RTC_BKPxR(后备寄存器)

    • 用于存储后备电池供电的RTC时钟信息。
  10. RTC_ISR(中断和状态寄存器)

    • 用于读取RTC的中断标志和状态。
  11. RTC_ICR(中断清除寄存器)

    • 用于清除RTC的中断标志。
  12. RTC_PRER(预分频器寄存器)

    • 用于配置RTC的预分频器。
  13. RTC_CNTH(计数器寄存器高)和 RTC_CNTL(计数器寄存器低)

    • 用于存储RTC的秒计数器值。
  14. RTC_ALRH(闹钟寄存器高)和 RTC_ALRL(闹钟寄存器低)

    • 用于配置RTC的闹钟时间。

 步骤

在STM32上设置RTC、读取RTC数据和写入RTC数据的基本步骤:

1.配置RTC时钟源

  • 选择时钟源:通常选择低速外部时钟(LSE)作为RTC的时钟源,因为它是一个稳定的32.768kHz时钟。
  • 使能时钟:通过编程RTC和后备域(RTC和后备寄存器时钟使能)相关的RCC(Reset and Clock Control)寄存器来使能RTC时钟。

2. 配置RTC

  • 配置RTC初始化结构体:使用RTC_InitTypeDef结构体来配置RTC的参数,如小时格式(12小时制或24小时制)、日期格式等。
  • 初始化RTC:调用HAL_RTC_Init()函数,将配置好的参数写入RTC相关的寄存器。

3. 设置时间

  • 配置时间结构体:使用RTC_TimeTypeDefRTC_DateTypeDef结构体来设置时间和日期。
  • 设置时间:调用HAL_RTC_SetTime()HAL_RTC_SetDate()函数来设置RTC的时间。

4. 读取时间

  • 读取时间:调用HAL_RTC_GetTime()HAL_RTC_GetDate()函数来从RTC模块读取当前的时间和日期。

5. 写入数据

  • 写入后备寄存器:STM32的RTC模块通常附带后备寄存器,可以在微控制器断电后保留数据。可以使用HAL_RTCEx_BKUPWrite()函数来写入数据到后备寄存器。

6. 读取数据

  • 读取后备寄存器:使用HAL_RTCEx_BKUPRead()函数来从后备寄存器读取数据。

注意

当关闭RTC(实时时钟)模块时,日历功能通常不会更新。RTC模块需要保持运行,才能持续跟踪和更新时间。如果RTC被关闭,它将停止计时,因此日历信息也不会更新。

在某些情况下,即使RTC模块被软件“关闭”(即,不再通过软件更新或读取时间),只要RTC的电源(例如后备电池或超级电容)仍然连接,RTC硬件本身可能仍然在运行。这取决于具体的微控制器和其RTC模块的设计。但是,如果软件不再与RTC交互,那么即使RTC硬件在运行,系统也不会知道当前的时间或日期。

如果你想要在关闭RTC模块后保留日历信息,你需要在关闭之前将当前的时间信息存储到非易失性存储器中(如后备存储器或Flash),然后在重新启动或打开RTC时从这些存储器中恢复时间信息。这样,即使RTC在一段时间内没有运行,系统也可以恢复到最后存储的时间点,并继续从那里更新日历信息。

 

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

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

相关文章

工采电子国产D类音频放大器iML6602可以替代TPA3118

iML6602是一款高集成度、高效率的双声道D类音频功率放大器;支持BTL和PBTL两种模式输出,供电电压范围4.5V ~ 26V;双通道BTL模式下输出功率 230W(8Ω,24V,THDN0.1%)单通道PBTL模式下可以输出60W&a…

Python中的函数定义(def)详解

Python中的函数定义(def)详解 在编程语言中,函数是组织代码的一种方式,它们可以帮助我们将复杂的程序拆分为简单、易管理的部分。在Python中,函数的定义使用def关键字。 什么是函数? 函数是一段完成特定…

虚拟串口调试(Windows)

在单片机和嵌入式设备开发过程中,我们有时需要对程序的串口进行调试,但是身边又恰好没有硬件设备,此时,我们可以通过虚拟串口来实现模拟本地端口,方便调试。 软件安装 VSPD虚拟串口工具 下载VSPD软件:百…

django和vue开发的前后端分离网站怎么部署到服务器上,django和vue前后端分离网站怎么通过宝塔部署

提示:如果看完全部教程后仍然部署不成功,可以联系作者 一、提前准备 想要把django vue 前后端分离网站部署到服务器上,有一些提前准备的东西 1、备案域名(域名必须备案) 这里需要解析两个域名,一个前端&…

【数据结构|C语言版】栈和队列

前言1. 栈1.1 栈的概念和性质1.2 顺序栈1.3 链栈1.4 共享栈 2. 队列2.1 队列的概念和性质2.2 循环队列2.3 链式队列2.4 双端队列 3. 例题精选3.1 有效的括号3.2 用队列实现栈2.4 用栈实现队列3.4 设计循环队列3.5 参考答案 结语 #include<GUIQU.h> int main { 上期回顾: …

浏览器控制台console常用命令小结

chrome调试工具的Console对象相信很多人使用过&#xff0c;熟练的Web开发人员会经常使用 console.log() 在其代码中打印消息和调试问题&#xff0c;实际上还有很多很有用的功能和技巧&#xff0c;善用之可以极大提高Web开发&#xff0c;网站调优的效率&#xff01; 这里我们总结…

Ansible---Playbook剧本

文章目录 Playbook案例1 Playbook剧本基本用法案例2 Playbook剧本定义、引用变量案例3.when条件判断迭代剧本Roles 模块 Playbook Tasks&#xff1a;任务是 Playbooks 的核心&#xff0c;它们是 Playbook 中的一项指令&#xff0c;告诉 Ansible 在远程主机上执行什么操作。每个…

kubectl_进阶_安全

安全 在前面的学习中&#xff0c;我们知道对于资源对象的操作都是通过 APIServer 进行的&#xff0c;那么集群是怎样知道我们的请求就是合法的请求呢&#xff1f; 这就涉及到k8s的安全相关的知识了。 1. API对象 Kubernetes有一个很基本的特性就是它的所有资源对象都是模型…

pdf2htmlEX:pdf 转 html,医学指南精细化处理第一步

pdf2htmlEX&#xff1a;pdf 转 html&#xff0c;医学指南精细化处理第一步 单文件转换多文件转换 代码&#xff1a;https://github.com/coolwanglu/pdf2htmlEX 拉取pdf2htmlEX 的 Docker&#xff1a; docker pull bwits/pdf2htmlex # 拉取 bwits/pdf2htmlex不用进入容器&…

统信UOS 1070桌面操作系统如何备份及恢复全盘数据

原文链接&#xff1a;统信UOS 1070桌面操作系统如何备份及恢复全盘数据 Hello&#xff0c;大家好啊&#xff01;数据备份和还原对于保护我们的重要信息至关重要&#xff0c;尤其是当系统遭遇意外时&#xff0c;能够快速恢复到正常状态。今天&#xff0c;我将介绍如何在统信UOS …

树莓派配置双网卡分别为AD HOC和AP模式

树莓派配置双网卡分别为AD HOC和AP模式 需求说明&#xff1a;为了实现分级网络管理&#xff0c;将多个无人机分簇&#xff0c;簇间使用AD HOC进行无中心自组织的网络&#xff0c;簇内使用AP-AC模式进行中心化网络。因此&#xff0c;需要配置一台设备&#xff0c;同时完成AD HOC…

设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)

目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化…

【微信小程序开发】微信小程序、大前端之flex布局方式详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

液晶高抗干扰驱动LCD段码屏驱动芯片VK2C22抗干扰系列瓦斯表段码LCD液晶驱动芯片

VK2C22是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大176点&#xff08;44SEGx4COM&#xff09;的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff0c;也可通过指令进入省电模式。其高抗干扰&#xff0c;低功耗的特性适用于水电气表以及工控仪表类产品…

简单几步解决Windows 10播放视频提示安装HEVC扩展

相信有不少人都遇到过以下的问题&#xff0c;废话不多说&#xff0c;直接上干货&#xff01; 1.下载插件 免费地址链接: 点击下载 2.安装插件 如图所示&#xff0c;在下载的目录路径里&#xff0c; 1.按住键盘 SHIFT&#xff0c;点击鼠标右键&#xff0c;选择在此处打开Powe…

4WRPH系列比例阀外置放大器

控制4WRPH6或4WRPH10比例伺服阀放大器适用于驱动带非线性曲线的直动式比例伺服电磁阀&#xff0c;模拟量控制电器放大器模块式的放大器用于安装在机柜内35mm卡轨架上&#xff0c;输出级带电气反馈用于闭环控制。使能输入功能可控制放大器输出开或关&#xff0c;带斜坡时间发生器…

const成员函数、cout/cin和重载运算符<<、>>、

目录 一、为什么cout&#xff0c;cin可以自动识别类型&#xff1f; 二、留提取运算符重载&#xff08;<<&#xff09; 三、留插入运算符重载&#xff08;>>&#xff09; 四、对上述的总结&#xff1a; 五、const成员 成员函数原则&#xff1a; 六、默认成员函…

Object类

Object类 概念&#xff1a;Object类是所有类的父类&#xff0c;也就是说任何一个类在定义时候如果没有明确的指定继承一个父类的话&#xff0c;那么它就都默认继承Object类&#xff0c;因此Object类被称为所有类的父类&#xff0c;也叫做基类/超类。 常用方法 方法类型描述eq…

Python实战开发及案例分析(12)—— 模拟退火算法

模拟退火算法&#xff08;Simulated Annealing&#xff09;是一种概率搜索算法&#xff0c;源自于金属退火过程。在金属退火中&#xff0c;通过缓慢降低温度&#xff0c;金属内部的原子能够从高能态逐步达到较低能态。模拟退火算法利用类似的原理&#xff0c;通过随机搜索和概率…

Samtec连接器应用科普 | 连接智能工厂中的AI

【摘要/前言】 本文是系列的第一部分&#xff0c;我们将探讨人工智能在工业领域的作用。 人工智能&#xff08;AI&#xff09;的话题最近成为头条新闻&#xff0c;因为最新一代基于云的人工智能工具有望为机器的力量带来重大飞跃。在所有关于人工智能将如何影响我们的讨论中&…