STM32内部Flash的使用
简介
STM32内部自带不同大小的Flash,其主要功能是保存已经编译完成的代码。在实际的产品中为了节约成本如果有需要存储少量的数据会选择存放在内部Flash中。
注:STM32对于Flash 大小的描述 单位都是字节(Byte)而非位(bit)。
如何确定不同芯片Flash的大小
不同类型的STM32芯片拥有的FLASH大小也不一样,具体的数值可以参考数据手册或者从Keil中获得。
注:从Keil中可以发现它是起始地址(Start)和长度(Size),长度是用16进制表示 0x100000转化为10进制 1048576B=1024KB=1MB。
如何确定Flash的分区方式
通过上述即可知道不同芯片的Flash和SRAM大小,一般来说存储都会分区或者分页。STM32内部的Flash也不例外,在不同芯片的参考手册中会讲解其分区的方式。图一是STM32F407ZGT6的Flash分区方式,图二是STM32F103C8T6的分区方式。
如何写入或者读取内部Flash数据
具体的驱动有很多厂家已经帮我们做了底层驱动(正点原子、野火等),只需要拿来使用即可。但是需要注意驱动要与芯片的型号对应,及F4系列和F1系列的驱动是有区别的不可混用(从分区中就可以看出区别)。
STM32的内部Flash是用来存编译完成的二进制的,那如何防止我们写入过程中修改或者误操作已经烧录的程序区。
1)首先我们需要计算出每次编译的程序大小,在Keil中编译完成后会有一串数据(如下所示),这串数据有何作用。
Program Size: Code=25042 RO-data=6598 RW-data=56 ZI-data=5944
编译后占用Flash的大小为:Code+RO-data 25042+6598=31,640 Byte = 31KB
编译后占用SRAM的大小为:RW-data+ZI-data 56+5944=6000 Byte = 6KB
2)如图所示在这一栏中就是代码烧写所使用的Flash大小,前面的0x8000000是开始地址,后面的0x100000是大小。我们可以换算一下把0x100000换算成10进制就是1048576 Byte也就是1MB。刚好就是手册中Flash的大小,所以只需要修改这个数据为0x7FFF(32KB)即可。
3)在修改Flash的代码空间时,需要注意就是要按照扇区进行修改。例:在注意事项一中计算出来的代码大小是31KB 换算为16进制也就是0x7C00,那么为什么填入的长度确实0x7FFF,参考F4系列的分区图可知,0x7C00是在扇区1中,并且扇区1还没有用完还剩下1KB的空间。我们读写Flash的过程中,读写的起始地址如果是0x80007C01。那么在操作过程中可能会出现误操作,因为数据擦除是按照扇区擦除的,这就会直接导致崩溃。
参考
正点原子《STM32F4开发指南-库函数版本_V1.2》
ST《STM32F4xx中文参考手册》
ST《STM32中文参考手册_V10》
stm32后生成编译文件大小探索
STM32内部Flash的使用相关推荐
- map文件分析 stm32_使用STM32内部Flash额外的空间来存储数据
本次分享关于STM32内部FLASH的笔记. STM32 芯片内部的 FLASH 存储器,主要用于存储我们代码.如果内部FLASH存储完我们的代码还有剩余的空间,那么这些剩余的空间我们就可以利用起来, ...
- STM32 内部Flash读写 程序源码 [已验证]
目录 STM32 内部Flash带缓存读写 程序源码 0 Macro 1.Flash_Erase 2. Flash_Read_Byte 3.Flash_Write_NoBuffer 4.Flash_W ...
- stm32内部Flash读写
文章目录 1.stm32内部flash介绍 2.读写驱动编写 3.源码 上篇文章讲到了STM32来驱动外部flah的操作,flash真是好东西啊,内存大,能存的东西多,这样我们就可以用它来做一些大点的 ...
- STM32内部flash详解(1)
STM32 内部FLAsh概述 今天说一下STM32中的内部flash. 当我们把写好的代码下载MCU中,这个代码时存放在flash中的.当芯片重启复位上电后,会通过内核对flash进行代码的加载运行 ...
- 读写STM32内部flash读写代码
读写STM32内部flash读写代码 由于老师的要求,所以写了一份读写STM32内部FLASH的代码,这样的话就可以把STM32里面没有用来保存代码段的部分用来存储数据了. 由于<stm32fl ...
- STM32CubeMX系列|STM32内部FLASH
STM32内部FLASH 1. 内部FLASH简介 之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLA ...
- c语言flash里能存文件吗,STM32内部FLASH打包读写
最近做到的项目在运行需要把一组uint8_t(unsigned char)的数据进行掉电储存,想到单片机STM32f030f4p6内部flash可以直接由程序操作,写了以下代码用于uint8_t数据打 ...
- 【STM32】STM32内部flash编程和擦除
一直在想设计OTA方案,使用开源的软件工具实现OTA,因为涉及较多,暂未完成... 关于OTA设计,可以先参考IAP:[IAP]IAP在线升级流程,涉及对芯片BootLoader和flash操作:升级 ...
- STM32内部Flash读写问题
STM32Flash读写之Flash调试技巧 文章目录 1.先熟悉所用MCU的Flash存储大小以及扇区地址 2.Flsah写之前为什么要先擦除 3.Flash擦除长时间占用CPU 4.实测Flash ...
最新文章
- python夹角余弦雷达图_性能可靠,可以全方位扫描的“千里眼”——先进的相控阵雷达...
- jsf mysql_如何在Spring JSF MySQL应用程序中正确显示阿拉伯文?
- Install 802.1x In Fedora
- 2015/12/28 十六进制转八进制 八进制转十六进制 作业
- MySQL - 多版本控制 MVCC 机制初探
- spring第二冲刺阶段第九天
- uva 10140——Prime Distance
- Android下常见的内存泄露 经典
- 浅谈C语言static关键字 静态变量 函数
- LIB和DLL的区别与使用
- Impala 解决Invalid argument: Client connection negotiation failed异常
- 神调侃!程序员专属成长书单,我比女朋友更了解你!
- Druid监控页面配置与使用
- 物联网项目开发编程语言一览
- 食堂自助点餐系统需求分析
- android 申请移动应用的签名生成方法
- 津巴布韦元以美元背书缓解货币贬值
- 2.4 导集,闭集,闭包
- jquery组织结构图插件 (基于jit-yc 做可拖动、自适应伸缩的orgchart)
- 支付宝集五福可以开“外挂”? 70万人秒集齐!
热门文章
- Unity3d 中Legacy动画系统-剑圣的动画
- Linux 单用户修改root密码
- sqlserver重启后一直显示“正在恢复”,怎么办?
- 易观方舟“纳新”Argo,私有化部署、开放、免费、精益运营通通都是关键词……
- Vue 引入 BootStrap Vue 使用教程
- 破解明宇报表开发工具全程记录
- os.listdir是什么意思
- 关于rospy等库文件倒入pycharm的办法
- 全国计算机等级考试专用辅导教程,全国计算机等级考试专用辅导教程:三级数据库技术...
- 抖快排抖音短视频搜索排名前十方法