FLASH闪存

一、FLASH简介

1、FLASH简介

(1)STM32F1系列的FLASH包含程序存储器系统存储器选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器选项字节进行擦除和编程

(2)读写FLASH的用途:     

                利用程序存储器的剩余空间来保存掉电不丢失的用户数据     

                通过在程序中编程IAP),实现程序的自我更新

(3)在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议系统加载程序(Bootloader)下载程序

(4)在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口下载程序

2、闪存模块组织

3、FLASH基本结构

4、FLASH解锁

(1)FPEC共有三个键值:     

                RDPRT键 = 0x000000A5(解除读保护的秘钥)

                KEY1 = 0x45670123     

                KEY2 = 0xCDEF89AB

(2)解锁:     

                复位后,FPEC被保护不能写入FLASH_CR     

                在FLASH_KEYR先写入KEY1再写入KEY2,解锁     

                错误的操作序列会在下次复位前锁死FPEC和FLASH_CR

(3)加锁:     

                设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR

5、使用指针访问存储器

(1)使用指针读指定地址下的存储器:     

                uint16_t Data = *((__IO uint16_t *)(0x08000000));

(2)使用指针指定地址下的存储器:     

                *((__IO uint16_t *)(0x08000000)) = 0x1234;

(3)其中:     

                #define    __IO    volatile (易变的数据,防止编译器优化)

6、程序存储器

(1)编程

(2)页擦除

(3)全擦除

7、选项字节

(1)选项字节

        a.RDP:写入RDPRT键(0x000000A5)后解除读保护

        b.USER:配置硬件看门狗和进入停机/待机模式是否产生复位

        c.Data0/1:用户可自定义使用

        d.WRP0/1/2/3:配置写保护,每一个位对应保护4个存储页(中容量)

(2)选项字节编程

        a.检查FLASH_SR的BSY位,以确认没有其他正在进行的编程操作

        b.解锁FLASH_CR的OPTWRE位

        c.设置FLASH_CR的OPTPG位为1(即将写入选项字节)

        d.写入要编程的半字到指定的地址(指针写入操作)

        e.等待BSY位变为0

        f.读出写入的地址并验证数据

(3)选项字节擦除

        a.检查FLASH_SR的BSY位,以确认没有其他正在进行的闪存操作

        b.解锁FLASH_CR的OPTWRE位(选项字节里面有一个单独的解锁)

        c.设置FLASH_CR的OPTER位为1(即将擦除选项字节)

        d.设置FLASH_CR的STRT位为1(触发芯片,开始干活)

        e.等待BSY位变为0

        f.读出被擦除的选择字节并做验证

8、器件电子签名

(1)电子签名(ID号)存放在闪存存储器模块系统存储区域,包含的芯片识别信息出厂时编写不可更改,使用指针读指定地址下的存储器可获取电子签名

(2)闪存容量寄存器:     

                基地址:0x1FFF F7E0     

                大小:16位

(3)产品唯一身份标识寄存器:     

                基地址: 0x1FFF F7E8     

                大小:96位

二、读写内部FLASH

1、按照以下接线方式连接,并将STLINK插到电脑上

2、FLASH函数驱动模块

(1)FLASH库函数的功能

三、读取芯片ID

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

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

相关文章

Setapp AI 怎么样,值得订阅吗?

Setapp 是一款提供 240 多款 Mac 软件库,可以满足 Mac 和 iOS 用户的各种需求。只需支付一笔订阅费,就可以使用一系列应用程序,这些应用程序可以简化任务、提高创造力和组织工作流程。不过,Setapp 并不只注重应用程序的数量&#…

Transformer预测 | 基于Transformer的风电功率多变量时间序列预测(Matlab)

文章目录 预测效果文章概述模型描述程序设计参考资料预测效果 文章概述 Transformer预测 | 基于Transformer的风电功率多变量时间序列预测(Matlab) Transformer 模型本质上都是预训练语言模型,大都采用自监督学习 (Self-supervised learning) 的方式在大量生语料上进行训练,…

【机器学习300问】127、怎么使用词嵌入?

在探讨如何使用词嵌入之前,我们首先需要理解词嵌入模型的基础。之前的文章已提及,词嵌入技术旨在将文本转换为固定长度的向量,从而使计算机能够解析和理解文本内容。可以跳转下面链接去补充阅读哦! 【机器学习300问】126、词嵌入…

【链表经典面试题】LeetCode138.复制带随机指针的链表(链表深拷贝)

📇文章目录 🚀题目描述🚀思路1:🚀思路2:🚀完整代码 🚀题目描述 解读: 题目意思就是 给你一个链表 这个链表中除了有next指针之外 还有一个指向这个链表的随机位置的一个指…

简易人工智能入门

一、监督or非监督 监督学习(Supervised Learning):训练集有标记信息(Y),学习方式有分类和回归 无监督学习(Unsupervised Learning):训练集没有标记信息,学习…

事件驱动架构详解:触发与响应构建高效系统

目录 前言1. 事件驱动架构概述1.1 什么是事件1.2 事件驱动架构的核心概念 2. 事件驱动架构的实现2.1 基于消息队列的实现2.2 基于发布-订阅模式的实现2.3 基于流处理的实现 3. 事件驱动架构的优势3.1 松耦合性3.2 可扩展性3.3 异步处理3.4 灵活性 4. 事件驱动架构的应用场景4.1…

管道液位传感器在扫地机器人的应用

管道液位传感器在扫地机器人中的应用正日益受到重视。随着人们生活压力的增加,扫地机器人成为了解决家务烦恼的得力助手,而其中一个重要功能就是缺水提醒。实现这一功能的关键便是管道液位传感器。 管道液位传感器能够及时监测水箱中水的水位&#xff0…

工商业光伏项目怎么做?

随着全球对可再生能源的关注度不断提高,工商业光伏项目已成为企业实现绿色转型、降低能耗成本的重要途径。本文将详细介绍工商业光伏项目的开发流程,以及项目实施过程中需要注意的关键点。 一、项目前期准备 在启动工商业光伏项目之前,首先要…

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

oracle中执行select ... for update需要什么权限?

oracle中执行select … for update需要什么权限? 问题 在oracle中,一个用户执行select … for update需要什么权限? 分析测试 用户1: test_0614 用户2:test 目标表:test.t_0614 执行语句:se…

MySQL—索引—基础语法

目录 一、创建、查看以及删除索引的语法 (1)创建索引 1、1会用到一个关键字:CREATE。 1、2增加索引还可以用到另外一个关键字——ALTER TABLE 表名 ADD INDEX ... 。 2、解释。 (2)查看索引 1、查看索引需要用到…

Vue3模拟国足18强赛抽签

Vue3国足18强赛抽签 国足遇到这个对阵&#xff0c;能顺利出现吗&#xff1f; 1、系统演示 Vue3模拟国足18强赛抽签 2、关键代码 开始抽签 <script setup> import FenDang from "/components/chouqian/FenDang.vue"; import {ref} from "vue";le…

我又挖到宝了!小米、352、希喂宠物空气净化器除毛能力PK

养宠家庭常常因为猫咪们掉毛的问题烦恼。无论是短毛猫还是长毛猫&#xff0c;它们的毛发总是无处不在&#xff0c;从沙发到地毯&#xff0c;从床铺到衣物&#xff0c;甚至飘散在空气中。其中最难清理的就是飘浮在空气中的浮毛&#xff0c;最让人担心的是&#xff0c;空气中的浮…

TikTok 推出专属AI 内容工具

TikTok最近推出了一款极具实用性的新工具包——TikTok Symphony。它融合了生成式人工智能技术&#xff0c;让内容创作变得更加迅速和便捷。 无论是营销人员还是创作者&#xff0c;都能在TikTok上轻松制作出高质量的内容。Symphony将人类的创造力与AI的高效性完美融合&#xff0…

ARM32开发--存储器介绍

知不足而奋进 望远山而前行 目录 文章目录 前言 存储器分类 RAM ROM EEPROM Flash 总结 前言 在现代计算机系统中&#xff0c;存储器扮演着至关重要的角色&#xff0c;不仅影响着数据的存取速度和稳定性&#xff0c;还直接关系到计算机系统的性能和应用场景的选择。存…

【vue3】for循环多选框勾选必填校验

业务场景&#xff1a; 多选项必选一个&#xff0c;选了的输入框必填 <el-row :gutter"20"><el-col :span"12"><el-form-item label"捆绑终端硬件标识" prop"terminalCodeList"><el-checkbox-groupv-model"…

人工智能--搭建人工神经网络

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;神经元与感知器 &#x1f348;神经元&#xff08;Neuron&#xff09; &#x1f348;感知器 &#x1f349;损失函数与梯度下降算法 &#x1f348;损失函数 &#x1f348;梯度下降算法 &#x1f349;…

1. 基础设计流程(以时钟分频器的设计为例)

1. 准备工作 1. 写有vcs编译命令的run_vcs.csh的shell脚本 2. 装有timescale&#xff0c;设计文件以及仿真文件的flish.f&#xff08;filelist文件&#xff0c;用于VCS直接读取&#xff09; vcs -R -full64 -fsdb -f flist.f -l test.log 2. 写代码&#xff08;重点了解代码…

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据 1. Kafka Broker 工作流程1.1 Zookeeper 存储的 Kafka 信息1.2 Kafka Broker总体工作流程1.2.1 Controller介绍 1.3 Broker 重要参数 2. 节点服役与退役3. Kafka副本 1. Kafka Broker 工作流程 …

找不到d3dx9_43.dll无法继续执行代码的几种解决方法

在工作或生活使用电脑都会遇到丢失dll文件应用无法启动的情况&#xff0c;比如你安装完一款你最喜欢的游戏在启动的时候提示系统缺少d3dx9_39.dll、d3dx9_40.dll、d3dx9_41.dll、d3dx9_42.dll、d3dx9_43.dll、xinput1_3.dll 文件而无法正常游戏&#xff0c;或你在工作的时候安装…