STM32F103学习笔记(六) RTC实时时钟(原理篇)

目录

1. RTC简介

2. STM32F103的RTC模块概述

2.1 RTC模块的基本原理

2.2 RTC的工作原理

2.3 备份寄存器的功能和特点

2.4 RTC的工作流程

3. RTC的常见应用场景

4. 常见问题与解决方案

1. RTC简介

        实时时钟(RTC)是嵌入式系统中的一种重要组件,它提供了精确的时间跟踪功能,即使在系统关机时也能保持准确。RTC通常由一个专用的硬件模块组成,用于跟踪当前的年、月、日、时、分、秒以及星期等时间信息。

        在嵌入式系统中,RTC的应用非常广泛。它被用于记录事件的时间戳、执行定时任务、调度系统操作等等。比如,您可能在计时器中使用RTC来定时执行某个任务,或者在数据记录应用中使用它来标记数据的时间戳。

2. STM32F103的RTC模块概述

2.1 RTC模块的基本原理

        STM32F103的RTC模块采用了低功耗的BKP(备份寄存器)单元作为其基础。这个单元具有电池供电备份功能,即使在系统掉电的情况下也能保持时钟的运行和数据的保存。RTC模块主要由时钟源选择、时钟分频器、日历寄存器、时钟寄存器和闹钟功能组成。简化的RTC框图如下

2.2 RTC的工作原理

        RTC的工作原理是基于一个32位的计数器,它以固定的时间间隔(通常为1秒)递增。这个计数器可以通过预分频器来调整,以满足不同应用的需求。当计数器溢出时,它会产生一个中断或者触发其他的事件,比如闹钟功能。RTC模块还具有多种功能,比如自动校准、低功耗模式等,可以进一步提高其灵活性和可靠性。由于一般的固定时间间隔为1秒,所以我们需要将频率分频至1Hz,在stm32f103c8t6中,我们一般使用外部低速时钟32.768kHz(一般的RTC模块自带,如图所示)为外部输入频率进行分频

2.3 备份寄存器的功能和特点

        备份寄存器是RTC模块的关键部分,它提供了一个持久性的存储区域,用于保存RTC计数器的值、日历信息和其他重要数据。这些寄存器在系统掉电时仍然保持其内容,因此非常适合用于保存系统状态、事件记录等应用。

2.4 RTC的工作流程

        RTC的工作流程通常分为初始化和运行两个阶段。在初始化阶段,我们需要配置RTC的时钟源、预分频器、日历寄存器等参数,并启用相应的中断或事件。在运行阶段,RTC会根据预设的时钟源和分频器递增计数器,同时更新日历信息,处理闹钟事件等。通过合理配置和管理,我们可以充分发挥RTC模块的功能和性能。

3. RTC的常见应用场景

RTC模块在各种嵌入式系统中都有着广泛的应用,主要体现在以下几个方面:

        实时时钟功能: RTC提供了精确的实时时钟功能,用于显示当前时间和日期。这在各种需要时间标记的场景中非常常见,例如智能手表、时钟、计时器等设备。

        数据记录: 许多应用需要记录事件发生的时间,如数据采集、日志记录等。RTC提供了准确的时间标记,能够帮助我们记录事件发生的时间,并根据需要对记录的数据进行分析和处理。

        定时任务: RTC可以用于执行定时任务,例如定时触发某个操作、定时采集数据等。通过设置定时器,我们可以实现定时执行特定的任务,从而提高系统的灵活性和可控性。

        闹钟功能: RTC还可以用于实现闹钟功能,提醒用户执行某些任务或者提醒重要事件的发生。通过设置闹钟时间和触发条件,我们可以实现各种个性化的闹钟功能,满足用户的不同需求。

        电池供电设备: RTC通常具有低功耗特性,在电池供电的设备中得到广泛应用,例如智能手表、智能家居设备等。RTC的低功耗特性可以保证设备长时间运行,并提供持续的时间显示和日期记录功能。

4. 常见问题与解决方案

RTC 时间不准确或漂移较大

        问题原因: RTC 模块的时间不准确或者漂移较大可能是由于晶体振荡器频率不稳定、电源波动或环境温度变化等因素引起的。

        解决方案: 检查晶体振荡器的质量和连接情况,确保其稳定可靠。另外,选择高质量的电源以及优化系统的供电电路也有助于提高 RTC 时间的稳定性。

RTC 无法启动或初始化失败

        问题原因: RTC 无法启动或初始化失败可能是由于电源供应不足、外部晶体连接错误或者 RTC 寄存器配置错误等原因导致的。

        解决方案: 检查系统的电源供应是否正常,确保 RTC 模块有足够的电源供应。同时,检查外部晶体的连接情况和配置是否正确,并仔细检查 RTC 寄存器的配置参数是否符合要求。

RTC 时间设置不正确

        问题原因: RTC 时间设置不正确可能是由于用户设置的时间参数错误或者 RTC 寄存器配置错误引起的。

        解决方案: 仔细检查用户设置的时间参数,确保其符合实际需求。同时,检查 RTC 寄存器的配置,确保时间设置参数正确写入 RTC 寄存器中。

RTC 闹钟或定时器功能无法正常工作

        问题原因: RTC 闹钟或定时器功能无法正常工作可能是由于闹钟或定时器参数配置错误、中断使能错误或者中断优先级设置错误等原因引起的。

        解决方案: 仔细检查 RTC 闹钟或定时器的参数配置,确保其设置正确。同时,检查中断使能位和中断优先级设置,确保相关中断被正确允许,并且优先级设置合理。

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

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

相关文章

ThreadLocal“你”真的了解吗?(二)

《ThreadLocal“你”真的了解吗?(一)》这篇文章梳理了ThreadLocal的基础知识,同时还梳理了java中线程的创建方法以及这两者之间的关系,本篇文章我们将继续梳理与ThreadLocal相关,在上一节也提过的另一组件T…

函数——递归6(c++)

角谷猜想 题目描述 日本一位中学生发现一个奇妙的 定理,请角谷教授证明,而教授 无能为力,于是产生了角谷猜想。 猜想的内容:任给一个自然数, 若为偶数则除以2,若为奇数则乘 3加1,得到一个新的…

深入理解JS的执行上下文、词法作用域和闭包(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

mvn版本导致的Failed to execute goal on project问题与解决

目录 一,报错情况与原因二,maven的下载与安装1,卸载maven2,安装mvn3,指定mvn的默认版本: 一,报错情况与原因 使用命令mvn package时会报如下错误: Failed to execute goal on proj…

prometheus+grafana监控nginx的简单实现

1.编译安装NGINX 加入编译安装nginx-module-vts模块,目的是为了获取更多的监控数据(虚拟主机,upstream等) nginx下载 http://nginx.org/download/nginx-1.20.2.tar.gz nginx-module-vts下载 https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2…

9.5K Star,又一款超棒开源轻量自动化运维平台

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 一个好的运维平台就变得非常重要了,可以节省大量的人力和物…

冯诺依曼体系结构 与 操作系统

一、冯诺依曼体系结构 深入理解冯诺依曼体系结构 计算机的出现就是为了解决实际问题, 所以把问题交给计算机,计算机经过处理,得到一个结果反馈给我们,所以这中间就必然涉及到了输入设备,中央处理器(包括运算器和控制器)和输出设备…

【读后感】《枪炮、病菌与钢铁》人类社会的命运

初看这个书名其实感到困惑,风马牛不相及的三个名词怎么就凑到一起了,这书是讲什么的。 先说结论,讲的是人类历史,具体是1.3万年前开始至今的历史以及现代世界格局的形成,1.3万年前从这个时间节点以后,不论…

勇宝趣学JavaScript ES6第二章(解构赋值)

在ES6中,我们经常使用到解构赋值这个知识点,今天我们就来好好讲讲这一小部分知识点。咱们争取这回一次性讲明白。 今天是元宵节,祝大家节日快乐,只有我自己还在无聊的码字。 给我点个赞吧,嘿嘿!&#xff01…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建,调用,查看,删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧,我们不再像单链表去用head去存头和尾,直接让r[0] 1,l[1] 0; idx 2.进行初始化, 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标, r[N]:表示指向下一个节点的下标。大家不用担心i…

[VNCTF2024]-PWN:shellcode_master解析(orw,用mmap代替read读文件)

查看保护 查看ida 在sandbox函数中,函数先使用了seccomp_init初始化,允许了所有系统调用,再用seccomp_rule_add来禁用掉了部分系统调用,其中包括execve和read seccomp_init函数可以进行系统调用全禁用和全允许初始化 seccomp_ru…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

python_pyecharts绘制漏斗图

python-pyecharts绘制漏斗图 from pyecharts.charts import Funnel from pyecharts import options as opts# 数据 data [("访问", 100), ("咨询", 80), ("订单", 60), ("点击", 40), ("展现", 20)]# 创建漏斗图 funnel …

uvloop,一个强大的 Python 异步IO编程库!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 什么是uvloop库? 安装uvloop库 使用uvloop库 uvloop库的功能特性 1. 更…

【信息提取】FindSomething 浏览器插件

下载地址 FindSomething 浏览器插件 概述 在网页的源代码或js中找到一些有趣的东西 FindSomething 用于快速在网页的html源码或js代码中提取一些有趣的信息,包括可能请求的资源、接口的url,可能请求的ip和域名,泄漏的证件号、手机号、邮箱…

程序员可以做什么副业呢?

如果你经常玩知乎、看公众号(软件、工具、互联网这几类的)你就会发现,好多资源连接都变成了夸克网盘、迅雷网盘的资源链接。 例如:天涯神贴,基本上全是夸克、UC、迅雷网盘的资源链接。 有资源的前提下,迅雷…

2024年云南事业单位报名流程!明天就开始报名啦,千万不要错过哦

注意啦!注意啦!2024年云南事业单位报名即将开始! ▶️公告已发布,2月26日上午9:00开始报名‼️ 相关时间节点 **报名时间:**2024年2月26日9:00至3月1日18:00 **资格初审时间:**2024年2月26日…

【Python】Windows本地映射远程Linux服务器上的端口(解决jupyter notebook无法启动问题)

创作日志: 学习深度学习不想在本地破电脑上再安装各种软件,我就用实验室的服务器配置环境,启动jupyter notebook时脑子又瓦特了,在自己Windows电脑上打开服务器提供的网址,那肯定打不开啊,以前在其它电脑上…

【服务发现--service】

1、service的定义 "Service"简写"svc”。Pod不能直接提供给外网访问,而是应该使用service。Service就是把Pod暴露出来提供服务,Service才是真正的“服务”,它的中文名就叫“服务”。可以说Service是一个应用服务的抽象&#…