微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

音频数据的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工程

整个过程和之前的步骤区别不大

在这里插入图片描述

在这里插入图片描述

配置时钟

在这里插入图片描述

这里配置管脚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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐