一、Flash简介
Flash 是存储芯片的一种,通过特定的程序可以修改里面的数据。Flash 存储器又称闪存,它结合了ROM 和RAM 的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势), U 盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash 全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader 以及操作系统或者程序代码或者直接当硬盘使用。
Flash的编程原理都是将1写为0,但不能将0写为1,所以在进行Flash编程前,必须将对应的块擦除,即将该块的每一位都变为1,块内所有字节变为0xFF。
二、Flash地址空间的数据读取
2.1 创建STM32CUBEMX工程
整个过程和之前的步骤区别不大
配置时钟
这里配置管脚PC13
设置堆栈大小为4K,导出工程
打开工程,添加flash.c文件
添加头文件
#include "flash.h"
uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];
uint8_t i;
uint8_t FlashTest[] = "Hello This is ZhangShiSan Flash Test DEMO";
编译烧录即可!不过此次使用STlink
然后进去Debug模式,在view下打开memory1窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容:
点击View->Watch windows,选择Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
定义好的句子写到了地址0x0800c000中了
参考文章
https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501