前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据处理思想和程序架构: 单片机stm32f407xxx系列flash存储方案

数据处理思想和程序架构: 单片机stm32f407xxx系列flash存储方案

作者头像
杨奉武
发布2021-03-05 11:18:04
1.3K0
发布2021-03-05 11:18:04
举报
文章被收录于专栏:知识分享知识分享

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/单片机知识点总结/directory.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

因为用到了STM32F407系列的单片机的flash存储数据,所以写了这套程序.

目的是为了在便于存储.

关于407的Flash

1.F407xxx系列的flash都是这个样子

STM32F405xx/407xx and STM32F415xx/417xx 也是这样子

主存储区总共12个扇区,Sector0 - Sector11;

Sector0 - Sector3 每个扇区是16KB = 16*1024 = 16384字节; 总共4个扇区 = 16384*4=65536字节

Sector4 扇区是64KB = 64*1024 = 65536字节;

Sector5 - Sector11 每个扇区是128KB = 128*1024 = 131072字节; 总共7个扇区 = 131072*7=917504字节

这些扇区加起来总共是1M字节

2.关于flash的擦除

2.1

F407的flash擦除的时候要求每次只能擦除某个扇区;

擦除函数是: FLASH_EraseSector(uint32_t FLASH_Sector, uint8_t VoltageRange)

函数的第一个参数是扇区编号,第二个参数填写自己芯片的供电电压范围.一般都是填写 VoltageRange_3

2.2 关于怎么获取这个编号

所以擦除一般都写成: FLASH_EraseSector(/*获取地址对应的扇区编号*/STMFLASH_GetFlashSector(要擦除的地址), VoltageRange_3)

2.3 提供给用户的擦除函数

2.关于flash的写入

用户只需要记住,写入的时候写的地址必须是4的倍数,最少写入一个字(4字节)

提供给用户的写入函数:(一般的数据咱不直接使用这个函数存储数据,具体原因接着往下看)

3.关于flash的读取

关于本节封装的Flash写读函数思路

1.使用其中一个扇区存储数据,假设使用11扇区,准备一个固定大小(假设是512)的u32类型的数组用来存储数据

记住一句话:只要擦除过了的地方,不需要再次擦除就可以写入数据

在下载程序的时候.默认所有的flash都是已经擦除过的.

2.第一次存储

把整个数组全部写到扇区的最前面

3.第二次存储(不需要擦除,直接写入就可以因为后面都已经擦除过了)

把整个数组紧接着写到后面

4.第三次存储(不需要擦除,直接写入就可以因为后面都已经擦除过了)

把整个数组紧接着写到后面

5.假设写到最后了

我后面空了一点是因为定义的数组大小不一样,不一定正好占满.

6.接着再写

检测不够了以后,擦除下这个扇区,把数据从头开始存储.

源码使用

1.打开这节的程序

2.使用下面两个文件

3.提示:存储数据的时候是把数据放到这个数组里面,然后调用一下刷新函数.

4.存储数据

5.读取存储的数据(直接从数组获取)

因为数组里面的值就是存储在flash里面的值,所以直接从数组里面获取即可

6.读取存储的数据(从flash里面获取)

吃饭中.................

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 关于407的Flash
  • 关于本节封装的Flash写读函数思路
  • 源码使用
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档