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的使用方法: 基本概念 defineExpose是 Vue3 中的一个工具函数,是仅能在<script setup>中使用的函数,用于显式暴露组件内部的属性或方法给父组件使用2。在 Vue3 的<script setup>中,组件的…...
思维转换:突破思维桎梏,创造更高效的工作与生活
在现代职场和生活中,我们经常面临着各种挑战和问题,有时候虽然付出了很多努力,但依然难以找到更有效的解决方案。这时,或许我们需要的不是更多的努力,而是一次“思维转换”。这一概念看似简单,但它背后却蕴…...
OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnPGeneric 是 OpenCV 中一个更为通用的函数,用于解决 PnP 问题。它能够返回多个可能…...
vue3学习日记5 - 项目起步
最近发现职场前端用的框架大多为vue,所以最近也跟着黑马程序员vue3的课程进行学习,以下是我的学习记录 视频网址: Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记: vue3学习日记1 - 环境搭建-CSDN博…...
java导出pdf文件
java导出pdf,前端下载 1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接 使用注意点 因为原来制作的pdf表单内容过于复杂,下面代码只包含前两行的操作。 本次操作需要前端向后端发起请求,后端返回数据给前端…...
【MySQL学习笔记】MySQL视图View
视图View 1、视图的基础语法2、检查选项3、视图的更新4、视图的作用 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲&…...
从玩具到工业控制--51单片机的跨界传奇【2】
咱们在上一篇博客里面讲解了什么是单片机《单片机入门》,让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识,顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话,可以看看博主的C语言专栏哟ÿ…...
【Redis】初识Redis
目录 Redis简介 Redis在内存中存储数据 Redis数据库中的应用 Redis缓存中的应用 Redis消息中间件 尾言 Redis简介 如下是Redis官网中,对Redis的一段描述 在这段描述中,我们提取如下关键要点: Redis主要用于在内存中存储数据Redis可…...
docker虚拟机平台未启用问题
在终端中输入如下代码,重启电脑即可 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 对于Docker Desktop - Unexpected WSL error问题 参考链接 解决WSL2与docker冲突问题...
《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题
《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么?请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…...
关于使用FastGPT 摸索的QA
近期在通过fastGPT,创建一些基于特定业务场景的、相对复杂的Agent智能体应用。 工作流在AI模型的基础上,可以定义业务逻辑,满足输出对话之外的需求。 在最近3个月来的摸索和实践中,一些基于经验的小问题点(自己也常常…...
关于H5复制ios没有效果
问题场景:今天遇到这样一个问题,需要从后端接口获取到的值进行复制,且不能提现调用获取值,因为是一个数据列表,每个列表元素需要当场点击调用接口获取值进行复制,本来以为很简单的一个需求,当做…...
【STM32-学习笔记-3-】TIM定时器
文章目录 TIM定时器Ⅰ、TIM定时器函数Ⅱ、TIM_TimeBaseInitTypeDef结构体参数①、TIM_ClockDivision②、TIM_CounterMode③、TIM_Period④、TIM_Prescaler⑤、TIM_RepetitionCounter Ⅱ、定时器配置Ⅲ、定时器外部中断NVIC配置 TIM定时器 Ⅰ、TIM定时器函数 // 将定时器寄存器…...
EMS专题 | 守护数据安全:数据中心和服务器机房环境温湿度监测
您需要服务器机房温度监测解决方案吗? 服务器机房是企业中用于存储、管理和维护服务器及其相关组件的设施。服务器机房通常位于数据中心内,是一个专门设计的物理环境,旨在确保服务器的稳定运行和数据的安全性。服务器机房主要起到存储和管理数…...
Vue JavaScript 小写数字金额转换成大写汉字(附编程思路)
一、编程思路(本案例只考虑9999万亿以内的数字转换,相信这个金额对于人民币来说已经足够庞大了,超过此数值的金额不保证转换汉字的准确性,且最多精确到小数点后四位): 1、将示例(不管是…...
【自动化测试】—— 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. 安装淘宝镜像…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
SQLSERVER-DB操作记录
在SQL Server中,将查询结果放入一张新表可以通过几种方法实现。 方法1:使用SELECT INTO语句 SELECT INTO 语句可以直接将查询结果作为一个新表创建出来。这个新表的结构(包括列名和数据类型)将与查询结果匹配。 SELECT * INTO 新…...
学习 Hooks【Plan - June - Week 2】
一、React API React 提供了丰富的核心 API,用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素,JSX 会被编译成该函数…...
Spring AI中使用ChatMemory实现会话记忆功能
文章目录 1、需求2、ChatMemory中消息的存储位置3、实现步骤1、引入依赖2、配置Spring AI3、配置chatmemory4、java层传递conversaionId 4、验证5、完整代码6、参考文档 1、需求 我们知道大型语言模型 (LLM) 是无状态的,这就意味着他们不会保…...
跑通 TrackNet-Badminton-Tracking-tensorflow2 项目全记录
📝 跑通 TrackNet-Badminton-Tracking-tensorflow2 项目全记录 git clone https://github.com/Chang-Chia-Chi/TrackNet-Badminton-Tracking-tensorflow2.git TrackNet-Badminton-Tracking-tensorflow2 conda create --prefix /cloud/TrackNet-Badminton-Tracking-…...
