音频数据的Flash读取

一、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工程

整个过程和之前的步骤区别不大
音频数据的Flash读取
音频数据的Flash读取
配置时钟
音频数据的Flash读取

这里配置管脚PC13

音频数据的Flash读取
设置堆栈大小为4K,导出工程

音频数据的Flash读取
打开工程,添加flash.c文件
音频数据的Flash读取
添加头文件

#include "flash.h"

音频数据的Flash读取
音频数据的Flash读取

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];

音频数据的Flash读取

uint8_t i;
uint8_t FlashTest[] = "Hello This is ZhangShiSan Flash Test DEMO";

编译烧录即可!不过此次使用STlink
然后进去Debug模式,在view下打开memory1窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容:
音频数据的Flash读取
点击View->Watch windows,选择Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口
音频数据的Flash读取
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
音频数据的Flash读取
定义好的句子写到了地址0x0800c000中了
音频数据的Flash读取

参考文章

https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501

上一篇:手机开机慢反应慢是为什么?


下一篇:内存之RAM、SRAM、DRAM、ROM、FLASH、SDRAM、DDR*