当前位置: 首页 > news >正文

STM32-笔记40-BKP(备份寄存器)

一、什么是BKP(备份寄存器)?

备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。
此外, BKP控制寄存器用来管理侵入检测和RTC校准功能。
复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问:
通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟
电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。
用户数据存储容量:
20字节(中容量和小容量)/ 84字节(大容量和互联型)

二、BKP框图

 三、读写BKP

复制项目文件19-串口打印功能

重命名为53-BKP读写

打开项目

加载文件

bkp与rtc的关系?

BKP是控制寄存器用来管理侵入检测和RTC校准功能。存储RTC的校验值或者记录一些重要的数据。

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "rtc.h"int main(void)
{HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */led_init();                         /* 初始化LED灯 */uart1_init(115200);rtc_init();printf("hello world!\r\n");rtc_write_bkr(1, 0xA5A5);//写进去一个内容//读出来一个内容printf("读出来的值为:%X\r\n", rtc_read_bkr(1));//以十六进制的方式进行打印while(1){ }
}

rtc.c

#include "rtc.h"RTC_HandleTypeDef rtc_handle = {0};
//初始化rtc,因为bkp依赖于rtc 
void rtc_init(void)
{__HAL_RCC_PWR_CLK_ENABLE();//使能电源时钟__HAL_RCC_BKP_CLK_ENABLE();//使能bkp时钟HAL_PWR_EnableBkUpAccess();//允许访问备份域rtc_handle.Instance = RTC;rtc_handle.Init.AsynchPrediv = 32767;rtc_handle.Init.OutPut = RTC_OUTPUTSOURCE_NONE;HAL_RTC_Init(&rtc_handle);
}
//读rtc,读出来是2个字符16个字节,十六位寄存器,bkrx指定读的是哪个寄存器
uint16_t rtc_read_bkr(uint8_t bkrx)
{uint32_t data = 0;//读bkp寄存器data = HAL_RTCEx_BKUPRead(&rtc_handle, bkrx);return (uint16_t)data; 
}
//写rtc,写进哪个寄存器?bkrx,写进去什么?data
void rtc_write_bkr(uint8_t bkrx,uint16_t data)
{//写bkp寄存器HAL_RTCEx_BKUPWrite(&rtc_handle, bkrx, data);
}

rtc.h

#ifndef __RTC_H__
#define __RTC_H__#include "sys.h"void rtc_init(void);
uint16_t rtc_read_bkr(uint8_t bkrx);
void rtc_write_bkr(uint8_t bkrx, uint16_t data);#endif

实现结果:

相关文章:

STM32-笔记40-BKP(备份寄存器)

一、什么是BKP(备份寄存器)? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或…...

NAS中不同RAID级别特点与适用场景

1. RAID 0(条带化) 硬盘数量:至少2块。硬盘要求:硬盘容量可以不同,但总容量以最小硬盘为准(例如:1TB 2TB 2TB,其中1TB会被浪费)。优点: 读写性能显著提升&…...

node.js的进程保活

nodejs的进程保活其实用PM2应该更好用些,不过由于原理其实并不复杂,我们可以自己手写一个服务来干这个工作。 假设我们有一个服务,可以这样来定义下它的相关信息: const svcs[ {"sid":"apl","name"…...

meta name=“viewport“ content=“width=device-width, initial-scale=1.0“

meta name“viewport” content“widthdevice-width, initial-scale1.0” 这段代码在网页设计中扮演着非常重要的角色,尤其是在响应式设计中。下面是对这段代码的详细解释及其在响应式设计中的作用: 1. 代码含义 html Copy Code meta 标签是 HTML 中用…...

【vue3】 defineExpose 的使用

以下是 Vue3 中defineExpose的使用方法&#xff1a; 基本概念 defineExpose是 Vue3 中的一个工具函数&#xff0c;是仅能在<script setup>中使用的函数&#xff0c;用于显式暴露组件内部的属性或方法给父组件使用2。在 Vue3 的<script setup>中&#xff0c;组件的…...

思维转换:突破思维桎梏,创造更高效的工作与生活

在现代职场和生活中&#xff0c;我们经常面临着各种挑战和问题&#xff0c;有时候虽然付出了很多努力&#xff0c;但依然难以找到更有效的解决方案。这时&#xff0c;或许我们需要的不是更多的努力&#xff0c;而是一次“思维转换”。这一概念看似简单&#xff0c;但它背后却蕴…...

OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnPGeneric 是 OpenCV 中一个更为通用的函数&#xff0c;用于解决 PnP 问题。它能够返回多个可能…...

vue3学习日记5 - 项目起步

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博…...

java导出pdf文件

java导出pdf&#xff0c;前端下载 1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接 使用注意点 因为原来制作的pdf表单内容过于复杂&#xff0c;下面代码只包含前两行的操作。 本次操作需要前端向后端发起请求&#xff0c;后端返回数据给前端…...

【MySQL学习笔记】MySQL视图View

视图View 1、视图的基础语法2、检查选项3、视图的更新4、视图的作用 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&…...

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》&#xff0c;让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识&#xff0c;顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话&#xff0c;可以看看博主的C语言专栏哟&#xff…...

【Redis】初识Redis

目录 Redis简介 Redis在内存中存储数据 Redis数据库中的应用 Redis缓存中的应用 Redis消息中间件 尾言 Redis简介 如下是Redis官网中&#xff0c;对Redis的一段描述 在这段描述中&#xff0c;我们提取如下关键要点&#xff1a; Redis主要用于在内存中存储数据Redis可…...

docker虚拟机平台未启用问题

在终端中输入如下代码&#xff0c;重启电脑即可 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 对于Docker Desktop - Unexpected WSL error问题 参考链接 解决WSL2与docker冲突问题...

《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题

《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么&#xff1f;请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…...

关于使用FastGPT 摸索的QA

近期在通过fastGPT&#xff0c;创建一些基于特定业务场景的、相对复杂的Agent智能体应用。 工作流在AI模型的基础上&#xff0c;可以定义业务逻辑&#xff0c;满足输出对话之外的需求。 在最近3个月来的摸索和实践中&#xff0c;一些基于经验的小问题点&#xff08;自己也常常…...

关于H5复制ios没有效果

问题场景&#xff1a;今天遇到这样一个问题&#xff0c;需要从后端接口获取到的值进行复制&#xff0c;且不能提现调用获取值&#xff0c;因为是一个数据列表&#xff0c;每个列表元素需要当场点击调用接口获取值进行复制&#xff0c;本来以为很简单的一个需求&#xff0c;当做…...

【STM32-学习笔记-3-】TIM定时器

文章目录 TIM定时器Ⅰ、TIM定时器函数Ⅱ、TIM_TimeBaseInitTypeDef结构体参数①、TIM_ClockDivision②、TIM_CounterMode③、TIM_Period④、TIM_Prescaler⑤、TIM_RepetitionCounter Ⅱ、定时器配置Ⅲ、定时器外部中断NVIC配置 TIM定时器 Ⅰ、TIM定时器函数 // 将定时器寄存器…...

EMS专题 | 守护数据安全:数据中心和服务器机房环境温湿度监测

您需要服务器机房温度监测解决方案吗&#xff1f; 服务器机房是企业中用于存储、管理和维护服务器及其相关组件的设施。服务器机房通常位于数据中心内&#xff0c;是一个专门设计的物理环境&#xff0c;旨在确保服务器的稳定运行和数据的安全性。服务器机房主要起到存储和管理数…...

Vue JavaScript 小写数字金额转换成大写汉字(附编程思路)

一、编程思路&#xff08;本案例只考虑9999万亿以内的数字转换&#xff0c;相信这个金额对于人民币来说已经足够庞大了&#xff0c;超过此数值的金额不保证转换汉字的准确性&#xff0c;且最多精确到小数点后四位&#xff09;&#xff1a; 1、将示例&#xff08;不管是…...

【自动化测试】—— Appium安装配置保姆教程(图文详解)

目录 一. 环境准备 二. JDK安装 1. 下载JDK 2. 安装JDK 3. 配置环境 4. 验证安装 三. Android SDK安装 1. 下载Android SDK 2. 安装Android SDK 3. 安装工具 4. 配置环境 5. 验证安装 四. NodeJS安装 1. 下载NodeJS 2. 安装NodeJS 3. 验证安装 4. 安装淘宝镜像…...

13-40K!AI大模型应用工程师,非常详细收藏我这一篇就够了

■ AI大模型应用工程师 13-40K 01 AI大模型应用工程师 ■ 岗位职责&#xff1a; 1、负责AI大模型在实际业务场景中的应用开发&#xff0c;提升模型性能与用户体验&#xff1b; 2、参与需求分析&#xff0c;根据不同类型的需求场景&#xff0c;结合业务目标选择AI技术/模型实现相…...

利用快马平台快速构建b站a8直播观看页面原型

利用快马平台快速构建B站A8直播观看页面原型 最近想尝试开发一个B站A8直播的观看页面原型&#xff0c;主要想验证一下直播相关的技术方案。作为一个前端开发者&#xff0c;我深知从头开始搭建这样一个页面需要花费不少时间&#xff0c;特别是在处理视频流、弹幕互动和响应式设…...

72小时数字记忆拯救计划:GetQzonehistory全方位备份方案

72小时数字记忆拯救计划&#xff1a;GetQzonehistory全方位备份方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 记忆保卫战&#xff1a;当十年说说面临消失危机 "您的QQ空间数…...

告别Python依赖!用这个纯TypeScript的stock-sdk,在浏览器和Node里轻松搞定A股港股美股行情

纯TypeScript金融数据解决方案&#xff1a;stock-sdk全场景开发指南 金融数据获取一直是前端和Node.js开发者面临的痛点。传统方案往往依赖Python生态&#xff0c;导致技术栈割裂、项目臃肿。而纯TypeScript实现的stock-sdk&#xff0c;以其零依赖、双端运行的特点&#xff0c;…...

3种简单方法实现Windows与Linux双系统文件无缝共享的终极方案

3种简单方法实现Windows与Linux双系统文件无缝共享的终极方案 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs 跨平台文件共享一直是Windows与Linux双系统用户面临的核心痛点。你是否曾…...

深入解析BulletinBoard:iOS上下文卡片库的完整架构指南与核心实现

深入解析BulletinBoard&#xff1a;iOS上下文卡片库的完整架构指南与核心实现 【免费下载链接】BulletinBoard General-purpose contextual cards for iOS 项目地址: https://gitcode.com/gh_mirrors/bu/BulletinBoard BulletinBoard是一个功能强大的iOS库&#xff0c;专…...

我在 Mac 写了个服务,硬要它在 18 岁高龄的 Windows 服务器上跑,结果…

前言 事情是这样的。 我有个朋友&#xff08;以下称他为"怨种朋友"&#xff09;&#xff0c;找到我说&#xff1a; "帮我写个 Go 服务&#xff0c;在你自己 Mac 上开发&#xff0c;最后要能跑在咱们公司那台快入土的 Windows 2008 服务器上。" 我当时的…...

AI编程革命:重塑程序员未来(一)

AI编程时代到来AI不会让程序员消失&#xff0c;但会深刻重塑这个职业。当代码生成变得轻而易举&#xff0c;程序员 的角色将从“代码编写者”升级为“问题解决者”与“架构设计师”。未来的核心竞争力&#xff0c;在于 理解复杂业务、设计系统逻辑&#xff0c;并用人类独有的创…...

破局双系统文件壁垒:WinBtrfs驱动终极应用指南

破局双系统文件壁垒&#xff1a;WinBtrfs驱动终极应用指南 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs 在Windows与Linux双系统环境中&#xff0c;用户常常面临跨系统文件访问的难题…...

SEO_快速见效的站内SEO优化检查清单与方法

SEO:快速见效的站内SEO优化检查清单与方法 在当今竞争激烈的互联网市场中&#xff0c;快速见效的站内SEO优化尤为重要。无论你是新站点的创建者&#xff0c;还是老站点的运营者&#xff0c;站内SEO优化都能帮助提升网站的搜索引擎排名&#xff0c;吸引更多访客。本文将带你了解…...