嵌入式——实时时钟(RTC)

news2025/1/17 13:50:26

目录

一、初识RTC

1.简介

2.特性

3.后备寄存器和RTC寄存器特性

二、RTC组成

1.相关寄存器

(1)控制寄存器高位(RTC_CRH)

(2)控制寄存器低位(RTC_CRL)

(3)预分频装载寄存器高位(RTC_PRLH)

(4)预分频裝载寄存器低位(RTC_PRLL)

(5)计数器寄存器高位(RTC_CNTH)

(6)计数器寄存器低位(RTC_CNTL)

(7)电源控制寄存器(PWR_CR)

(8)APB1 外设时钟使能寄存器(RCC_APB1ENR)

(9)备份域控制寄存器(RCC_BDCR)

2.RTC结构

3.RTC基本配置步骤

4.RTC系统配置流程描述

三、RTC驱动程序


一、初识RTC

1.简介

        实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能,计数频率常为秒。修改计数器的值可以重新设置系统当前的时间和日期。

2.特性

(1)32位的可编程计数器,可用于较长时间段的测量

(2)能在MCU掉电后运行

(3) 低功耗

3.后备寄存器和RTC寄存器特性

(1)部分寄存器写保护:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器不会被系统复位。

(2)数据存储功能:RTC和后备寄存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。后备寄存器可用于保存掉电时的数据

(3)独立工作:RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电在VBAT供电时仍可继续工作

(4)2个独立复位:APB1接口由系统复位;RTC核心只能由后备域复位;

二、RTC组成

1.相关寄存器

(1)控制寄存器高位(RTC_CRH

位2(OWIE):允许溢出中断位。

位1(ALRIE):允许闹钟中断。

位0(SECIE):允许秒中断。

(2)控制寄存器低位(RTC_CRL

位5(RTOFF):RTC操作关闭。(指示对其寄存器进行的最后一次操作的状态,即指示操作是否完成

位4(CNF):配置标志。(只有当此位在被置’1’并重新由软件清’0’后,从而允许向RTC_CNT、RTC_ALR或RTC_PRL寄存器写入数据)

(3)预分频装载寄存器高位(RTC_PRLH)

(4)预分频裝载寄存器低位(RTC_PRLL)

(5)计数器寄存器高位(RTC_CNTH)

(6)计数器寄存器低位(RTC_CNTL)

(7)电源控制寄存器(PWR_CR

(8)APB1 外设时钟使能寄存器(RCC_APB1ENR

位28(PWREN):电源接口时钟使能。

位27(BKPEN):备份接口时钟使能。

(9)备份域控制寄存器(RCC_BDCR

位15(RTCEN):RTC时钟使能。

位9:8(RTCSEL):RTC时钟源选择。

位 0(SEON):外部低速振荡器使能。

2.RTC结构

        RTC由两个主要部分组成。第一部分(APB1接口)用来和APB1总线相连另一部分(RTC核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频模块(可编程产生最长为1秒的RTC时间基准TR_CLK)。第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间

补充:

(1)RTC可以选择三种RTC的时钟源

        ①HSE时钟除以128。

        ②LSE振荡器时钟。

        ③LSI振荡器时钟。

(2)RTC的APB1单元还包含一组16位寄存器,可通过APB1,总线对其进行读写操作。

(3)APB1接口由APB1总线时钟驱动,用来与APB1总线接口。

(4)RTC的预分频模块包含的是一个20位的可编程分频器(RTC预分频器),分频系数最高为2的20次方

(5)RTC有3个专门的可屏蔽中断

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

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

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

(6)如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。

(7)系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个中断(闹钟中断)。

3.RTC基本配置步骤

(1)使能对RTC的访问:使能PWR和BKP时钟(RCC_APB1ENR、使能对后备寄存器和RTC(PWR_CR的访问权限

(2)设置RTC时钟源:激活LSE,设置RTC的计数时钟源为LSE。(RCC_BDCR

(3)进入配置模式:等待 RTOFF位为1,设置CNF位为1。(RTC_CRL

(4)设置RTC寄存器:设置分频值、计数值等(RTC_PRL),一般先只设置分频值,CNT的设置独立。

(5)退出配置模式:清除CNF位,等待RTOFF 位为1(RTC_CRL)即配置完成。

4.RTC系统配置流程描述

(1)查询RTOFF位,直到RTOFF的值变为1。

(2)置CNF值为1,进入配置模式

(3)对一个或多个RTC寄存器进行写操作

(4)清除CNF标志位退出配置模式

(5)查询RTOFF,直至RTOFF位变为’1‘以确认写操作已经完成。

三、RTC驱动程序

1.使能电源时钟并使能后备域访问:__HAL_RCC_PWR_CLK_ENABLE(使能电源时钟)、__HAL_RCC_BKP_CLK_ENABLE (使能备份时钟)、HAL_PWR_EnableBkUpAccess(使能备份访问)

2.开启LSE / 选择RTC时钟源 / 使能RTC时钟:HAL_RCC_OscConfig(开启LSE)、HAL_RCCEx_PeriphCLKConfig (选择RTC时钟源)、__HAL_RCC_RTC_ENABLE (使能RTC时钟)

3.初始化RTC,设置分频值以及工作参数:HAL_RTC_Init(初始化RTC)、HAL_RTC_MspInit(完成RTC底层初始化工作)

4.设置RTC的日期和时间

5.获取RTC当前日期和时间

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

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

相关文章

【Linux】分区向左扩容的方法

文章目录 为什么是向左扩容操作前的备份方法:启动盘试用Ubuntu后进行操作 为什么是向左扩容 Linux向右扩容非常简单,无论是系统自带的disks工具还是apt安装的gparted工具,都有图像化的界面可以操作。但是,都不支持向左扩容。笔者…

从 React 到 Qwik:开启高效前端开发的新篇章

1. Qwik Qwik 是一个为构建高性能的 Web 应用程序而设计的前端 JavaScript 框架,它专注于提供即时启动性能,即使是在移动设备上。Qwik 的关键特性是它采用了称为“恢复性”的技术,该技术消除了传统前端框架中常见的 hydration 过程。 恢复性是一种序列化和恢复应用程序状态…

PyTorch深度学习实战(33)——条件生成对抗网络(Conditional Generative Adversarial Network, CGAN)

PyTorch深度学习实战(33)——条件生成对抗网络 0. 前言1. 条件生成对抗网络1.1 模型介绍1.2 模型与数据集分析 2. 实现条件生成对抗网络小结系列链接 0. 前言 条件生成对抗网络 (Conditional Generative Adversarial Network, CGAN) 是一种生成对抗网络…

C#,最小生成树(MST)普里姆(Prim)算法的源代码

Vojtěch Jarnk 一、Prim算法简史 Prim算法(普里姆算法),是1930年捷克数学家算法沃伊捷赫亚尔尼克(Vojtěch Jarnk)最早设计; 1957年,由美国计算机科学家罗伯特普里姆独立实现; 19…

Spring Boot 项目配置文件

文章目录 配置文件的作用properties基本语法读取文件信息缺点 yml基本语法优点配置不同数据类型字符串类型的写法 配置对象配置集合 读取配置文件的几种方法EnvironmentPropertySource使用原生方式读取 设置不同环境的配置文件 配置文件的作用 整个项目中重要的数据都是在配置…

2000-2022年上市公司全要素生产率测算数据OLS法(含原始数据+测算代码do文档+计算结果)

2000-2022年上市公司全要素生产率测算数据OLS法(含原始数据测算代码do文档计算结果) 1、时间:2000-2022年 2、范围:上市公司 3、指标:证券代码、证券简称、统计截止日期、固定资产净额、year、股票简称、报表类型编…

【Axure教程0基础入门】00Axure9汉化版下载、安装、汉化、注册+01制作线框图

写在前面:在哔哩哔哩上面找到的Axure自学教程0基础入门课程,播放量最高,5个多小时。课程主要分为4个部分,快速入门、动态面板、常用动效、项目设计。UP主账号【Song老师产品经理课堂】。做个有素质的白嫖er,一键三连必…

【Spark系列3】RDD源码解析实战

本文主要讲 1、什么是RDD 2、RDD是如何从数据中构建 一、什么是RDD? RDD:弹性分布式数据集,Resillient Distributed Dataset的缩写。 个人理解:RDD是一个容错的、并行的数据结构,可以让用户显式的将数据存储到磁盘…

FPGA HDMI IP之DDC(本质I2C协议)通道学习

目的: 使用KingstVIS逻辑分析仪软件分析HDMI的DDC通道传输的SCDC数据(遵循I2C协议),同时学习了解SCDC的寄存器与I2C通信协议。 部分英文缩写: HDMIHigh Definition Multi-media Interface高清多媒体接口DDCDisplay Dat…

css文本水波效果

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>文本水波效果</title><style>* {mar…

网际协议 IP、IP地址

目录 网际协议 IP 虚拟互连网络 使用中间设备进行互连 IP 地址 IP 地址及其表示方法 ​编辑 IP 地址采用 2 级结构 IP 地址的编址方法 分类的 IP 地址 各类 IP 地址的指派范围 一般不使用的特殊的 IP 地址 IPv4网络中的地址类型 分类的 IP 地址的优点和缺点 划分子网…

unity学习笔记----游戏练习05

一、阳光的收集和搜集动画开发 1.收集阳光的思路&#xff1a;当鼠标点击到阳光的时候&#xff0c;就可以进行收集了。可以通过为添加一个碰撞器来检测Circle Collider 2D 编写脚本&#xff1a; 在SunManager中写一个增加阳光的方法 //增加阳光 public void AddSubSun(in…

C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态

C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态 —— 杭州 2024-01-28 code review! 文章目录 C++笔记之奇异递归模板模式CRTP(Curiously Recurring Template Pattern)和静态多态一.CRTP二.CRTP 的基本特征表现:基类是一个模板类;派生…

(免费领源码)java#Springboot#mysql旅游景点订票系统68524-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

java eazyexcel 实现excel的动态多级联动下拉列表(2)使用MATCH+OFFSET函数

原理 同样是将数据源放到一个新建的隐藏的sheet中&#xff0c;第一行是第一个列表的数据&#xff0c;第二行是每一个有下级菜单的菜单&#xff0c;他下面的行就是他下级菜单的每一值使用MATCH函数从第二行找到上级菜单对应的列根据OFFSET函数从2中获取的列&#xff0c;取得下级…

Linux 系统相关的命令

参考资料 Linux之chmod使用【linux】chmod命令详细用法 目录 一. 系统用户相关1.1 查看当前访问的主机和用户1.2 切换用户1.2.1 设置root用户密码1.2.2 普通用户和root用户切换 1.4 系统状态1.4.1 vmstat 查看当前系统的状态1.4.2 history 查看系统中输入过的命令 二. 系统文件…

【Demo】基于CharacterController组件的角色控制

项目介绍 项目名称&#xff1a;Demo1 项目版本&#xff1a;1.0 游戏引擎&#xff1a;Unity2020.3.26f1c1 IDE&#xff1a;Visual Studio Code 关键词&#xff1a;Unity3D&#xff0c;CharacterController组件&#xff0c;角色控制&#xff0c;自定义按键&#xff0c;Scrip…

Spring 的存储和获取Bean

文章目录 获取 Spring 上下文对象的方式存储 Bean 对象的方式类注解配置扫描路径&#xff08;必须&#xff09;Controller&#xff08;控制器存储&#xff09;Service&#xff08;服务&#xff09;Repository&#xff08;持久层&#xff09;Component&#xff08;工具&#xff…

༺༽༾ཊ—Unity之-04-工厂方法模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用工厂方法模式 创建 飞船模型&#xff0c; 首先资源商店下载飞船模型&#xff0c…

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson10(电话会话Ⅱ)

《美语从头学初级入门篇》 注意&#xff1a;被 删除线 划掉的不一定不正确&#xff0c;只是不是标准答案。 文章目录 Lesson 10 Telephone Conversation Ⅱ 电话会话&#xff08;二&#xff09;会话A会话B笔记I would like to do&#xff08;Id like to to do&#xff09;我想…