STM32的BKP与RTC简介

芯片的供电引脚

引脚表橙色的是芯片的供电引脚,其中VSS/VDD是芯片内部数字部分的供电,VSSA/VDDA是芯片内部模拟部分的供电,这4组以VDD开头的供电都是系统的主电源,正常使用时,全部都要接3.3V的电源上,VBAT是备用电池的引脚,如果要使用STM32的BKP和RTC,这个引脚就必须接备用电池,用来维持BKP和RTC主电源掉电后的供电,VBAT只有一根电源正,接的时候GND要与VDD共地。如果没有外部电池,参考手册建议VBAT引脚接到VDD并接一个100nf的滤波电容。

BKP简介

1、BKP(Backup Registers)备份寄存器

2、BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。当VDD和VBAT都没电时,BKP就会清空数据,因为BKP本质是RAM存储器,没有掉电不丢失的特性。

3、TAMPER引脚产生的侵入事件将所有备份寄存器内容清除(TAMPER引脚产生上升沿/下降沿就清空数据),注意PC13、TAMPER引脚、RTC输出在一个引脚上,只能分时复用

4、RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲

5、存储RTC时钟校准寄存器(可配合上面输出RTC校准时钟的功能对RTC时钟进行校准)

6、用户数据存储容量:20字节(中容量和小容量)/ 84字节(大容量和互联型)

BKP的基本结构

上图中的橙色部分位于后备区域,BKP和RTC都位于后备区域。后备区域供电的特性:当VDD主电源掉电时,切换至VBAT供电,当VDD上电时,供电由主电源VDD提供,这样可以节省VBAT备用电池的电量。

RTC简介

1、RTC(Real Time Clock)实时时钟

2、RTC是一个独立的定时器,可为系统提供时钟和日历的功能

3、RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0~3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时

4、32位的可编程计数器,可对应Unix时间戳的秒计数器

5、20位的可编程预分频器,可适配不同频率的输入时钟

6、可选择三种RTC时钟源:

    HSE时钟除以128(通常为8MHz/128)

    LSE振荡器时钟(通常为32.768KHz)

    LSI振荡器时钟(40KHz)

RTC的时钟大多是32.768kHz的原因

32.768kHz==32768Hz

32768=2^15,经过一个15位分频器的自然溢出,就可以得到1Hz的频率。

自然溢出:设计一个15位的计数器,该计数器没有计数目标,直接从0记到最大值32767,记满后自然溢出,这个信号就是1Hz的。没有计数目标,也不需要比较,可以简化电路设计。

RTC的框图

1、框图分为4个部分,上面是APB1总线读写部分(RTC是APB1总线上的设备),左边是核心的分频,计数计时部分,右边是中断输出使能和NVIC部分,下边是与PWR有关的部分(RTC的闹钟可以唤醒设备,退出待机状态),图中灰色部分在主电源VDD掉电后,可由VBAT维持供电,继续工作。

2、RTCCLK是RTC的时钟源选择,共有3中选择。

RTC_PRL寄存器的值是n就是n+1倍分频,比如n=6就是7分频。(n就是计数目标)

RTC_DIV计数器是一个自减计数器,来一个脉冲计数器减1,计数值减至0后再来一个脉冲溢出时由PRL重装载设定值。比如:DIV可以保持初始值为0,首次来一个脉冲,计数值溢出重载为32767,之后来一个脉冲减1,一直减至0,再来一个脉冲计数值重载,反复循环,详细看下图。两个秒脉冲的间隔就是32768个RTCCLK单位时间间隔。

3、当RTC_CNT和RTC_ALR的值相等时,这时就会产生RTC_Alarm信号,一路通向中断,可以在中断中执行一些操作,另一路通向待机部分,可以让单片机退出待机模式(WK_UP也可以使设备退出待机模式)。右边3个中断分别是秒中断,溢出中断和闹钟中断。F结尾的是中断标志位,IE结尾的是中断使能。

RTC的基本结构

RTC操作注意事项

1、执行以下操作将使能对BKP和RTC的访问:

设置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP时钟

设置PWR_CR的DBP,使能对BKP和RTC的访问

2、若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1。(为保证RTC掉电继续工作,RTC的寄存器由RTCCLK驱动。故用APB1总线访问RTC寄存器时,有时钟不同步的问题(一个36M,一个大约32k),只有在RTCCLK来一个上升沿RTC寄存器的值才能同步到APB1总线上,等待RSF标志位置1后,实质上就是等待RTC寄存器的值同步到APB1总线上,再由APB1总线获取RTC的值)

3、必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器(使用库函数时,自动加上了该操作)

4、对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器。(实质上还是由于时钟不同步的原因)

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

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

相关文章

无人机巡检中台揭秘,无人机管控平台助力巡查无人机巡检方案落地

随着无人机智能巡检的飞速发展,巡查无人机应用场景也日益多元,无人机巡检方案被频繁落地到工业生产及巡检巡逻业务中。而无人机管控平台应运而生,成为推动无人机智能巡检的关键工具。那我们一起来看一下无人机管控平台的作用: 一、…

vue3递归组件---树形组件

第一种方式&#xff0c;直接自己调用自己 Tree.vue <template><div class"tree"><div v-for"(item, index) in data" :key"item.name">每一层 {{ item.name }}<Tree v-if"item?.children?.length" :dataitem…

el-table 跨页多选

步骤一 在<el-table>中:row-key"getRowKeys"和selection-change"handleSelectionChange" 在<el-table-column>中type"selection"那列&#xff0c;添加:reserve-selection"true" <el-table:data"tableData"r…

记录 | 使用samba将ubuntu文件夹映射到windows实现共享文件夹

一、ubuntu配置 1. 安装 samba samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB&#xff08;Server Messages Block&#xff0c;信息服务块&#xff09;是一种在局域网上共享文件和打印机的一种通信协议。 sudo apt-…

使用 Axios 进行网络请求的全面指南

使用 Axios 进行网络请求的全面指南 本文将向您介绍如何使用 Axios 进行网络请求。通过分步指南和示例代码&#xff0c;您将学习如何使用 Axios 库在前端应用程序中发送 GET、POST、PUT 和 DELETE 请求&#xff0c;并处理响应数据和错误。 准备工作 在开始之前&#xff0c;请…

鸿蒙原生应用开发——分布式数据对象

01、什么是分布式数据对象 在可信组网环境下&#xff0c;多个相互组网认证的设备将各自创建的对象加入同一个 sessionId&#xff0c;使得加入的多个数据对象之间可以同步数据&#xff0c;也就是说&#xff0c;当某一数据对象属性发生变更时&#xff0c;其他数据对象会检测到这…

使用 Kubernetes 为 CI/CD 流水线打造高效可靠的临时环境

介绍 在不断发展的科技世界中&#xff0c;快速构建高质量的软件至关重要。在真实环境中测试应用程序是及早发现和修复错误的关键。但是&#xff0c;在真实环境中设置 CI/CD 流水线进行测试可能既棘手又昂贵。 Kubernetes 是一个流行的容器编排平台&#xff0c;提供临时环境解决…

后端返回base64文件前端如何下载

1.后端返回base64格式文件 2.前端代码 <style lang"less" scoped> import "./style/common.less";.table-div-a {color: #409EFF;text-decoration: underline;cursor: pointer; } </style><template><div class"template-con…

WPF仿网易云搭建笔记(1):项目搭建

文章目录 前言项目地址动态样式组合样式批量样式覆盖Prism新建UserControler修改Material Design 笔刷收放列表可以滚动的StackPanel列表点击展开或折叠 实现效果 前言 今天接着继续细化代码&#xff0c;把整体框架写出来 项目地址 WPF仿网易云 Gitee仓库 动态样式 【WPF】C#…

使用Pytorch实现Grad-CAM并绘制热力图

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 看一下这个main cnn.py的文件 那这里我为了方便 就直接从官方的torch vision这个库当中导入一些我们常用的model 比如说我这里的例子是采用的mobile net v3 large这个模型 然后这里我将pretrain设…

融合科技,升级医疗体验——医院陪诊服务的技术创新

随着科技的迅猛发展&#xff0c;医疗服务领域也在积极借助技术手段提升患者体验。本文将探讨如何利用先进的技术代码&#xff0c;将医院陪诊服务推向新的高度。 1. 医疗预约系统的实现 # 通过Python代码实现医疗预约系统 class MedicalAppointment:def __init__(self, patie…

持续集成交付CICD:使用Maven命令下载Nexus制品

目录 一、实验 1.Maven安装 2.Nexus搭建公共组仓库及Maven全局配置文件 3.使用Maven命令下载Nexus制品 一、实验 1.Maven安装 &#xff08;1&#xff09;CentOS环境安装步骤 tar -xf apache-maven-3.8.6-bin.tar.gz #解压 mv apache-maven-3.8.6 /usr/local/maven #移动…

django与数据库交互关于当前时间的坑

背景 在线上服务中使用时间进行数据库操作时发现异常&#xff0c;而在本地环境无法成功复现此问题&#xff0c;导致难以进行故障排查。 核心问题 view.py class XxxViewSet(viewsets.ModelViewSet):queryset Xxx.objects.with_status().order_by("status", &quo…

集简云 x 零售企业丨快速集成有赞商城和微盛企微管家,实现私域运营自动化

客户介绍 某公司是一家知名的饮料厂商&#xff0c;自1998年成立以来&#xff0c;一直致力于研发和生产各种热门饮品&#xff0c;如果汁、碳酸饮料、矿泉水等。因其独特的口感和健康的品质深受消费者的喜爱。企业拥有多个知名品牌&#xff0c;享有极高的品牌知名度和市场份额。该…

Innodb-ruby深入探索Innodb存储结构

达在之前已经分享过Innodb数据存储结构知识&#xff0c;但是都是基于理论原理知识理解&#xff0c;今天利用Innodb文件解析工具ruby进行探索Innodb真实的存储结构。 索引原理过程&#xff1a;【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引_innodb的聚集索引的数据插入_Surviv…

P4 Qt如何添加qss样式表文件和添加图片资源

目录 前言 01 添加图片资源文件 02 添加qss文件 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Qt基础_ChenPi的博客-CSDN博客》✨✨✨ &#x1f33a;本篇简介 &#xff1a;这一章…

华为OD机试 - 生成哈夫曼树(Java JS Python C)

题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。 请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 为了保证输出的二叉树中序遍历结果统一,增加以下限制: 二叉树节点中,左节…

【后端学前端学习记录】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…

案例064:基于微信小程序的考研论坛设计

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

【git push ERROR: commit id: missing Change-Id in message footer】

使用 gerrit 后&#xff0c;提交代码会出现如下截图问题&#xff1a; 临时解决&#xff1a; step1: 把上面红色的那条gitidir复制下来执行下&#xff1a; step2:执行下面的命令会添加change_id git commit --amendstep3: 然后推送代码到服务器上 git push origin HEAD:refs/fo…