stm32f103zet6_RTC_1_介绍

news2024/11/19 17:23:49

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.coloradmin.cn/o/1655299.html

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

相关文章

初学java

注意点 1.使用关键字long的时候,在其赋值的时候要在后面加上大写或者小写的l,个人推荐大写,小写与数‘1’难区分。 2.函数的名字要与文件夹的名字相同,并且文件夹后面一定要有.java。例如这个的名字是Main,函数就得用这个&#x…

SwiGLU激活函数

SwiGLU激活函数已经成为LLM的标配了。它是GLU的变体,公式如下: SwiGLU ⁡ ( x , W , V , b , c , β ) Swish ⁡ β ( x W b ) ⊗ ( x V c ) \operatorname{SwiGLU}(x, W, V, b, c, \beta)\operatorname{Swish}_\beta(x Wb) \otimes(x Vc) SwiGLU(x,…

Linux中的简单操作 ls/tar/pwd/cd/mkdir/touch 等

目录 前言 安装和卸载软件包 ls 查看指定路径下的文件和文件夹 tar 解压缩/压缩命令 pwd 查看当前路径 cd 改变目录 mkdir 创建目录 递归创建 rm rmdir 删除文件或目录 touch 创建文件 ll、echo、重定向符(>,>>) ll echo 重定向符…

VS编辑器下使用MFC完成水果销售系统

背景: 项目11:水果销售管理系统 (2周) (一)实验目的 通过该实验,使学生掌握windows程序设计的基本方法。以水果销售管理为背景,熟练应用数据库技术和第三方插件的嵌入技术&…

安卓自定义View

部分效果如下: 完整项目地址:https://download.csdn.net/download/qq_41733851/89282771?spm1001.2101.3001.9500

elk + filebeat 8.4.3 收集nginx日志(docker部署)

ELK filebeat docker部署 一、 elasticsearch部署1、运行elasticsearch临时配置容器2、拷贝文件目录到本地3、检查elasticsearch.yml4、删除之前elastic,运行正式容器5、docker logs记录启动日志 二、部署kibana1、运行kibana临时配置容器2、docker拷贝配置文件到本…

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展,我们正处于一个高度互联、数据驱动的网络时代。在这个时代,日志审计系统作为网络安全和信息管理的重要工具,发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…

Encoder——Decoder工作原理与代码支撑

神经网络算法 :一文搞懂 Encoder-Decoder(编码器-解码器)_有编码器和解码器的神经网络-CSDN博客这篇文章写的不错,从定性的角度解释了一下,什么是编码器与解码器,我再学习笔记补充的时候,讲一下…

LeetCode—随机链表的复制(深拷贝)

一.题目 二.思路分析 1.将拷贝节点插入到原节点后面 拷贝节点和原节点建立了一个关联关系 2.深拷贝 3.将新节点拿下来尾插形成新链表,恢复原链表 三.参考代码 /*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct No…

感应关盖垃圾桶项目

1.功能描述 检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 2.硬件说明 SG90舵机,超声…

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园失物招领系统的主要…

springcloud -nacos实战

一、nacos 功能简介 1.1.什么是Nacos? 官方简介:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括: 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…

【青龙面板教程】保姆级拉库 Faker库 以及依赖安装教程

青龙面板最新版拉库教程 新版青龙(订阅)拉库教程 拉库前请打开青龙面板-配置文件 第18行 GithubProxyUrl"" 双引号中的内容清空复制以下拉库命令即可。Faker2 助力池版【安全本地sign防CK泄漏】使用助力池请在群里发"助力池" 机器…

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接:Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发,并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序,比上一篇文章中直接克隆 Processing-An…

5G NR 吞吐量计算 and 4G LTE 吞吐量计算

5G NR Throughput References • 3GPP TS 38.306 V15.2.0 (2018-06) ➤J : number of aggregated component carriers in a band or band combination ➤Rmax : 948/1024 • For the j-th CC, Vlayers(j) is the maximum number of layers ➤Qm(j) : Maximum modulation orde…

韩顺平0基础学Java——第6天

p87-p109 运算符(第四章) 四种进制 二进制用0b或0B开头 十进制略 八进制用0开头 十六进制0x或0X开头,其中的A—F不区分大小写 10转2:将这个数不断除以2,直到商为0,然后把每步得到的余数倒过来&#…

【大数据】分布式数据库HBase下载安装教程

目录 1.下载安装 2.配置 2.1.启动hadoop 2.2.单机模式 2.3.伪分布式集群 1.下载安装 HBase和Hadoop之间有版本对应关系,之前用的hadoop是3.1.3,选择的HBase的版本是2.2.X。 下载地址: Index of /dist/hbase 配置环境变量&#xff1a…

虹科Pico汽车示波器 | 免拆诊断案例 | 2010款凯迪拉克SRX车发动机无法起动

故障现象 一辆2010款凯迪拉克SRX车,搭载LF1发动机,累计行驶里程约为14.3万km。该车因正时链条断裂导致气门顶弯,大修发动机后试车,起动机运转有力,但发动机没有着机迹象;多起动几次,火花塞会变…

《铁路出行更便捷:火车票预定审批系统的设计与应用》

在现代化的铁路交通管理中,火车票预定审批系统扮演着至关重要的角色。它不仅能够有效管理员工出差、培训等需要乘坐火车的行程,还能够提高审批效率,减少人力成本,确保出行安全。本文将探讨火车票预定审批系统的设计原则和应用场景…

如何使用Python下载哔哩哔哩(Bilibili)视频字幕

在本文中,我将向大家展示如何使用Python下载哔哩哔哩(Bilibili)视频的字幕。通过这个方法,你可以轻松地获取你喜欢的视频的字幕文件,方便学习和交流。 准备工作 在开始之前,我们需要安装一些必要的库&…