STM32——Flash闪存

news2024/9/28 3:27:33

以上部分,主存储器:程序存储器;

启动程序代码:系统存储器;

用户选择字节:选项字节

以下是闪存的管理员,用于擦除和读写的地址

C8T6一共64K,主存储器为64页

以下是整体框图:

FLASH的整体流程:

1、解锁+加锁

通过键寄存器对FLASH进行解锁(先用KEY1解锁,再用KEY2解锁),上一步完成后,要尽快加锁:加锁的时候在LOCK位写1即可锁住

2、使用指针访问存储器

读取寄存器地址为0X08000000的内容,将其强制转换为16位的指针类型,前一个*表示:指针取内容,将该地址下的内容取出(不需要解锁那一步,写才需要)

__IO用了define定义为变量,当编译器没有优化的时候,这个可加可不加,但是当编译器优化时,为防止有些必须代码被优化掉,可在其前加__IO,防止被优化

3、全擦除过程

在程序中,并没有判断LOCK位是否为1的过程,直接执行解锁功能

也不会去读出并验证所有页的数据

此时的信息块(系统存储器+选项字节)不受影响

闪存页擦除

4、写编程

如果需要写入很多数据就不断调用写入程序即可

5、选项字节的擦除(了解)

6、选项字节写入(了解)

7、器件电子签名(了解)

代码部分:

首先是编写MyFlash文件,包含写编程、擦除和读的程序;

之后再建立一个实现参数读写和存储管理功能的Store,其中建立一个数组用于放置掉电不丢失的数据,调用函数自动备份到Flash中;

之后在主函数通过写入数据调用store的数组,并备份到Flash中,实现任意读写参数,掉电不丢失功能

1、MyFlash

读取函数(32位、16位、8位)

全擦除函数

页擦除函数:

编程字节:

2、store模块

(1)先定义一个SRAM数组,用于管理FLASH最后一页数据,实现参数的任意读写和保存,需要备份再统一转到闪存中

512:16位2字节正好对应闪存一页1024字节

(2)判断闪存是否是第一次初始化

判断该页地址下的第一个半字是否是A5A5——不是,则表明第一次初始化,先进行页擦除——在该页的第一个半字处写入A5A5——将剩余的字节均写为0

(2)上电后将闪存的数据全都转移到SRAM中,保证掉电数据不丢失(闪存——SRAM的数据转移)

(3)SRAM——闪存的数据转换函数

(4)清除所有数据函数(先将SRAM的数据清零——再将数据从SRAM转移到闪存)

主函数:除了初始化各类函数外,主要实现按键1按下数据增加

按键2按下数据全部清0

数据掉电不丢失且复位也不会改变

实验结果如下:

FLASH

读取芯片ID:

直接在main中编写:

显示结果:

STM32江科大老师的视频完结!

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

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

相关文章

【数据库|第10期】SQL Server、Access和Sqlite 的表别名详解

日期:2024年8月28日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

视频云流化与PaaS平台解决方案详细介绍

一、什么是视频云流化? 视频云流化(Video Cloud Transcoding)是一种将视频文件转换为适用于流媒体传输的不同格式和码率的过程。它是云计算和流媒体技术的结合,通过利用云平台的计算和存储资源,将视频内容转码为适应不…

什么是时钟偏差—Clock Skew?理解时钟分配网络中的时钟偏差

了解时钟偏差是什么,以及它如何通过理解同步电路、时钟传递和时钟分配网络对现代系统产生影响。 现代数字电子设计的最大挑战之一是能够满足时序约束。在数字电路中,保持可预测且组织良好的操作逻辑流的一种方法是进行精确控制和明确定义时序。 时钟偏差是这些电路设计中需…

Scratch教学案例-《三顾茅庐》:让编程学习如同故事般引人入胜

三顾茅庐-小虎鲸Scratch资源站 在编程的世界里,我们常常寻找那种既能激发创意,又能提升技能的学习方式。今天,小虎鲸Scratch资源站为您带来了一款独特的教学作品——《三顾茅庐》。这是一部将经典故事与编程教学巧妙结合的Scratch项目&#x…

.NET 8.0 前后分离快速开发框架

目录 前言 项目介绍 功能特点 适用范围 内置功能 项目技术 1、前端技术 2、传送门 3、后端技术 项目结构 项目效果 项目地址 最后 前言 大家好,推荐一个.NET 8.0 为核心,结合前端 Vue 框架,实现了前后端完全分离的设计理念。它不…

【Python机器学习】NLP词频背后的含义——隐性狄利克雷分布(LDiA)

目录 LDiA思想 基于LDiA主题模型的短消息语义分析 LDiALDA垃圾消息过滤器 更公平的对比:32个LDiA主题 对于大多数主题建模、语义搜索或基于内容的推荐引擎来说,LSA应该是首选方法。它的数学机理直观、有效,它会产生一个线性变换&#xff…

进程间通信--IPC机制

今天主要讲述独立的进程之间的通信,我们知道,进程是一个完整代码的执行过程,那么我们想实现在进程运行的过程之中传递信息或者是发送数据,就是通过IPC机制来完成。 一、什么是IPC机制 IPC:inter process communication…

文件泄密?不存在的!一文读懂文件防泄密最新五个小妙招

在当今信息化时代,企业数据的安全性显得尤为重要。文件泄密事件频发,不仅会给企业带来巨大的经济损失,还可能损害企业的声誉。因此,如何有效防止文件泄密成为了企业管理中的重中之重。本文将为大家介绍最新的五个防泄密妙招&#…

vue大数据展示之虚拟列表

面试代码学习 父组件&#xff1a; <template><div class"box"><!--items总条数、 size数据高度、 shownumber每次渲染数据--><list :items"items" :size"60" :shownumber"10"></list></div><…

要实现主动元数据,关键技术在算子级血缘解析

主动元数据管理最早被 Gartner 在 2016 年提出&#xff0c;在 2022 年 Gartner 公布的顶级战略技术趋势中&#xff0c;主动元数据被认为是实现 Data Fabric&#xff08;数据编织&#xff09;和主动数据治理的基石&#xff0c;也是实现 Data Fabric 的关键能力 。在这份技术趋势…

全面解析:动态住宅代理的关键优势

在大数据时代的背景下&#xff0c;代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性&#xff0c;而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…

关于springboot的Rest请求映射处理的源码分析(二)

前面我们知道了他怎么处理表单映射&#xff0c;这里我们来研究一下&#xff0c;他是如何处理具体请求的。也就是说我有那么多/user你是怎么定位到我在哪个cotroller&#xff0c;并且你是怎么定位到我具体是哪个接口。 这里我们就来逐步定位一下这个问题。 一、组件分析 老路子…

Nacos 部分漏洞整理

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Naco简介 微信公众号搜索:南风漏洞复现文库 该文…

element中 el-input 不更新的问题

需要在上面输入数字,下面一列都更改成一样的数字 batchChange(list,field,value){console.log(list,field,value);list.forEach((i,index) > {i[field]value;this.$set(list,index, JSON.parse(JSON.stringify(i)));});} 用 JSON.parse(JSON.stringify(i)) 转一下后,就可以…

langchain入门系列之八 langgraph多agent示例

在之前的文章中我们介绍了langgraph&#xff0c;并且用它做了一个小小的示例&#xff0c;在本文中&#xff0c;我们将使用智普清言来构建多agent 系统。百度千帆对langgraph支持较差(尤其是强制要求奇数偶数的role设置&#xff0c;传入messages的奇数偶数要求&#xff0c;让人有…

用好外呼机器人,帮助企业提升客户管理效率

外呼机器人&#xff0c;作为现代科技与企业管理的结合体&#xff0c;正在企业客户管理领域掀起革命性的变化。随着人工智能技术的不断进步&#xff0c;外呼机器人不仅实现了自动化呼叫&#xff0c;还能根据客户的语音情感进行相应的反馈和操作&#xff0c;极大地提高了客户满意…

AI大模型编写多线程并发框架(六十三):监听器优化·上

系列文章目录 文章目录 系列文章目录前言一、项目背景二、第七轮对话-补充异步执行代码三、第八轮对话-增加累计完成等字眼四、第九轮对话-线程安全优化五、第十轮对话-增加运行时数据七、参考文章 前言 在这个充满技术创新的时代&#xff0c;AI大模型正成为开发者们的新宠。它…

SpringBoot+Vue的图书管理系统【包含运行步骤】

SpringBootVue图书管理系统 一、项目介绍1. 图书信息管理2. 图书类型管理3. 图书借阅管理4. 用户管理 二、技术选型后端技术选型前端技术选型 三、运行步骤后端启动前端启动 四、项目演示源码获取方式 五、总结与展望 大家好&#xff0c;这里是程序猿代码之路&#xff01;随着信…

Linux基础1-基本指令7(其他常用指令,shell简介)

目录 1.uname 2.常用小指令 3.查看系统信息的其他指令 4.shell命令及其原理 4.1这里我们简单了解一下shell 4.2 shell存在的意义&#xff1f; 1.uname 如何查看计算机体系架构&#xff1f; uname -a,查看详细信息 uname -r 查看简要信息 2.常用小指令 TAB&#x…

Socket编程---UDP篇

目录 一. UDP协议 二. Socket编程 2.1 sockaddr家族 2.2 接口介绍 三. 服务端实现 四. 服务端调用实现 五. 客户端实现 六. 效果展示 一. UDP协议 何为UDP协议的含义&#xff0c;上篇粗略提及了一下TCP与UDP的区别&#xff1a; TCP&#xff1a; •…