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

STM32F407之Flash

  • 寄存器分类

一般寄存器分为只读存储器 (ROM) 随机存储器(RAM)

  • 只读存储器

只读存储器也被称为ROM 在正常工作时只能读不能写。

只读存储器经历的阶段 ROM->PROM->EPROM->EEPROM ->Flash

优点:掉电不丢失,解构简单

缺点:只适用于固定数据的存储

  • ROM

在出场的时候就进行数据的写入写入完后不能修改

  • PROM

可以修改但是需要特定的编程器 , 采用熔丝工艺

  • EPROM紫外线可擦除只读存储器

EPROM采用的是紫外线擦除 也是需要特定的编程器,才能修改

  • 电可擦除只读存储器(EEPROM)

EEPROM采用了电压信号擦除,由于擦除和写入时需要加入高电压脉冲,而且擦除和写入的时间较长,一般只作为ROM来只用

可以进行某个存储单元进行擦除 成本高 容量小

  • Flash 闪存

Flash吸收了EPROM结构简单编程可靠的优点 又保留了EEPROM的隧道效应擦除的快捷性 而且集成度可以做到很高

Flash只能擦除某个扇区 不能擦除存储单元

  • 随机存取器RAM

随机存储器:可读可写但是掉电会丢失 他的最大的优点就是读写方便

RAM又分为静态随机存储SRAM和动态随机存储DRAM

可以看到Flash是1M

程序一般都是从Flash扇区0开始存储的 , 要是存储比较重要的数据一般我们都是从后面往前面存储

内部Flash的流程

如果用户打算对Flash空间进行编程或者擦除,对应的流程可以参考帮助手册以及文件注释

Flash解锁

Flash擦除

需要注意,在擦除扇区之前,需要设置编程/擦除的并行位数(字节、字、半字、双字),决定了擦除的时间。

然后,在进行扇区擦除的时候需要指定扇区号(扇区0~扇区11),扇区号可以通过扇区的地址进行计算

如果在擦除扇区的过程中打算跳转到下一个扇区,需要对扇区号进行计算和偏移(+8)

打算对扇区进行擦除操作,可以调用函数库中提供的函数接口来选择擦除某个扇区或者擦除所有扇区,如下图所示:

函数原型

FLASH_Status FLASH_EraseSector(uint32_tFLASH_Sector, uint8_t VoltageRange)

函数参数

参数一:FLASH_Sector          需要擦除的扇区号  如 FLASH_Sector_0  ~  FLASH_Sector_11

参数二:VoltageRange          需要擦除的并行位数 如 VoltageRange_3  以字(32bit)为单位

返回值  返回lFlash的操作状态    如 FLASH_COMPLETE  标志操作完成

Flash写入

需要注意,在写入扇区之前,需要设置编程/擦除的并行位数(字节、字、半字、双字),决定了写入的时间。

Flash闪存往某个扇区写入数据的操作流程如下

打算对扇区进行写入操作,可以调用函数库中提供的函数接口来选择把数据写入某个扇区

函数原型

FLASH_Status FLASH_ProgramWord(uint32_tAddress, uint32_t Data)

函数参数

参数一: Address          指的是准备写入数据的扇区地址       

参数二: Data                指的是准备写入的数据内容

返回值  返回lFlash的操作状态    如 FLASH_COMPLETE  标志操作完成

Flash上锁

如果已经完成Flash扇区的数据写入,为了防止出现意外状况导致扇区数据出现丢失等问题,则需要重新开启Flash寄存器的写保护功能。

Flash读取

如果已经把数据写入到Flash扇区的某个地址下,则可以通过访问扇区对应的地址空间来读取对应的数据,这里就设计到C语言的地址访问,可以通过指针进行操作。操作如下图所示:

注意:读取扇区地数据的时候扇区地址需要进行偏移,并且要访问符合扇区地址范围的空间。

思考:如果在对flash的某个扇区进行擦除之后,那这个扇区的地址下面的值默认是多少?

思考:如果在对flash的某个扇区进行数据写入时,如果扇区的起始地址中已经存在一些数           据,是否需要擦除扇区??  答案:需要先擦除扇区再重新写入数据

思考:如果在对flash的某个扇区进行数据写入时,如果扇区的起始地址中已经存在一些数           据,那把需要写入的数据写在已经存在的数据的地址之后,是否需要擦除扇区??            不需要

相关文章:

STM32F407之Flash

寄存器分类 一般寄存器分为只读存储器 (ROM) 随机存储器(RAM) 只读存储器 只读存储器也被称为ROM 在正常工作时只能读不能写。 只读存储器经历的阶段 ROM->PROM->EPROM->EEPROM ->Flash 优点:掉电不丢失,解构简单 缺点:只适…...

优化 Go 语言数据打包:性能基准测试与分析

场景:在局域网内,需要将多个机器网卡上抓到的数据包同步到一个机器上。 原有方案:tcpdump -w 写入文件,然后定时调用 rsync 进行同步。 改造方案:使用 Go 重写这个抓包逻辑及同步逻辑,直接将抓到的包通过网…...

【SQL】未订购的客户

目录 语法 需求 示例 分析 代码 语法 SELECT columns FROM table1 LEFT JOIN table2 ON table1.common_field table2.common_field; LEFT JOIN(或称为左外连接)是SQL中的一种连接类型,它用于从两个或多个表中基于连接条件返回左表…...

Qt(9.28)

widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {QPushButton *btn1 new QPushButton("登录",this);this->setFixedSize(640,480);btn1->resize(80,40);btn1->move(200,300);btn1->setIcon(QIcon("C:…...

javascript-冒泡排序

前言&#xff1a;好久没学习算法了&#xff0c;今天看了一个视频课&#xff0c;之前掌握很好的冒泡排序居然没写出来&#xff1f; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…...

第九届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)

一.题目分析 &#xff08;1&#xff09;.题目 &#xff08;2&#xff09;.题目分析 按键功能分析----存储位置的切换键 a. B1按下切换存储位置&#xff0c;切换后定时时间设定为当前位置存储的时间 b. B2短按切换时分秒高亮&#xff0c;设置完成后&#xff0c;长按把设置的时…...

MATLAB云计算集成:在云端扩展计算能力

摘要 MATLAB云计算集成是指将MATLAB的计算能力与云平台的弹性资源相结合&#xff0c;以实现高性能计算、数据处理和算法开发。本文详细介绍了MATLAB云计算的基本概念、优势、配置要点以及编程实践。 1. 云计算概述 云计算是一种通过互联网提供计算资源&#xff08;如服务器、…...

基于BeagleBone Black的网页LED控制功能(flask+gpiod)

目录 项目介绍硬件介绍项目设计开发环境功能实现控制LED外设构建Webserver 功能展示项目总结 &#x1f449; 【Funpack3-5】基于BeagleBone Black的网页LED控制功能 &#x1f449; Github: EmbeddedCamerata/BBB_led_flask_web_control 项目介绍 基于 BeagleBoard Black 开发板…...

【C语言】单片机map表详细解析

1、RO Size、RW Size、ROM Size分别是什么 首先将map文件翻到最下面&#xff0c;可以看到 1.1 RO Size&#xff1a;只读段 Code&#xff1a;程序的代码部分&#xff08;也就是 .text 段&#xff09;&#xff0c;它存放了程序的指令和可执行代码。 RO Data&#xff1a;只读…...

Java中的继承和实现

Java中的继承和实现在面向对象编程中扮演着不同的角色&#xff0c;它们之间的主要区别可以从以下几个方面进行阐述&#xff1a; 1. 定义和用途 继承&#xff08;Inheritance&#xff09;&#xff1a;继承是面向对象编程中的一个基本概念&#xff0c;它允许我们定义一个类&…...

uniapp云打包

ios打包 没有mac电脑,使用香蕉云编 先登录香蕉云编这个工具,新建csr文件——把csr文件下载到你电脑本地: 然后,登录苹果开发者中心 生成p12证书 1、点击+号创建证书 创建证书的时候一定要选择ios distribution app store and ad hoc类型的证书 2、上传刚才从本站生成的…...

端口安全技术原理与应用

目录 概述 端口安全原理 端口安全术语 二层安全地址配置 端口模式下配置 全局模式下配置 动态学习 二层数据包处理流程 三层安全地址配置 三层数据包处理流程 端口安全违例动作和安全地址老化时间 查看命令 端口安全的注意事项 小结 概述 园区网的接入安全关系着…...

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall 数据集-目标检测系列-鲨鱼检测数据集 shark 数据量&#xff1a;6k 数据样例项目地址&#xff1a; gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/Te…...

数字乡村解决方案-3

1. 国家大数据战略与数字乡村 中国第十三个五年规划纲要强调实施国家大数据战略&#xff0c;加快建设数字中国&#xff0c;推进数据资源整合和开放共享&#xff0c;保障数据安全&#xff0c;以大数据助力产业转型升级和提高社会治理的精准性与有效性。 2. 大数据与数字经济 …...

WPF文本框无法输入小数点

问题描述 在WPF项目中&#xff0c;文本框BInding双向绑定了数据Text“{UpdateSourceTriggerPropertyChanged}”&#xff0c;但手套数据是double类型&#xff0c;手动输入数据时&#xff0c;小数点输入不进去 解决办法&#xff1a; 在App.xaml.cs文件中添加语句&#xff1a; …...

R开头的后缀:RE

RE表示方位上的向后&#xff0c;一种时空上的折返&#xff0c;和表示否定意味的不。 68.re- 空间顺序 ①表示"向后&#xff0c;相反&#xff0c;不" RE表示正向抵抗的力的词语&#xff0c;和情绪的词语&#xff0c;用来表示一种极力的反抗和拒绝&#xff0c;包括…...

Vue2配置环境变量的注意事项

在实际开发中时常会遇到需要开发环境与生产环境中一些参数的替换,为了方便线上线下环境变量切换可以利用node中的process进行环境变量管理 实现步骤如下: 1.在 根目录 新增环境文件 .env.development 和 .env.production 注意文件名称保持一致( 需要强调的是文件中的变量名切…...

机器学习:探索未知边界,解锁智能潜力

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 在这个日新月异的科技时代&#xff0c;机器学习作为人工智能领域的核心驱动力&#xff0c;正以前所未有的速度改变着我们的世界。从智能家居的个性化推荐到自动驾驶汽车的精准导航&#xff0c;从医疗诊断的辅助…...

万户OA-ezOFFICE fileUpload.controller 任意文件上传漏洞复现

0x01 产品描述&#xff1a; 万户OA&#xff08;Office Automation&#xff09;是一款企业级协同办公管理软件&#xff0c;旨在为企业提供全面的办公自动化解决方案。万户ezOFFICE存在任意文件上传漏洞。攻击者可以通过该远程下载任意文件到目标服务器&#xff0c;导致攻击者可获…...

Time-MoE : 时间序列领域的亿级规模混合专家基础模型

Time-MoE : 时间序列领域的亿级规模混合专家基础模型 时间序列预测一直是量化研究和工业应用中的重要课题。随着深度学习技术的发展&#xff0c;大规模预训练模型在自然语言处理和计算机视觉领域取得了显著进展&#xff0c;但在时间序列预测领域&#xff0c;这些模型的规模和运…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...