历史上的今天
今天是:2025年07月26日(星期六)
2019年07月26日 | STM32学习笔记-FLASH读写
2019-07-26 来源:eefocus
STM32的FLASH除了可以烧写如程序外,还可以供给用户做存储器,存储参数用,但是要注意的是,FLSAH的擦写次数是有限制的,10万次。
STM32F1系列单片机内核是Cortext-M3系列的,其存储器的映射是按照Cortext-M3的标准设计的,如下图。

从上图可看出最下main的512M是分配给Code 即程序存储区. 其内部分配如下图。

从上图可以看到FLASH的起始地址是:0x0800 0000 到 0x0807 FFFF ,126M的FLASH空间。STM32按页来编程擦写FLASH,如我的 STM32F103RCT6 SRAM为48KB,FLASH有256K. 分页是2Kb一页来设计的,而又的小容量的单片机是1Kb一页。
下列图片均是从芯片的参考文档(RM0008)上截图的.


可以算出127+1=128*2KB=256KB。
//flash读写代码如下 写之前要擦除一整页的数据。写入数据要传入一个32位的地址,一次写入1个16位的数据(半字)。
//u32 addr - flash地址
//u16 dat - 写入数据
//有关STM32F103RCT6的FLASH详细情况学习,请看我的笔记。
void FLASH_Write(u32 addr, u16 dat){
FLASH_Unlock(); //解锁FLASH编程擦除控制器
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(addr); //写之前要先擦除页。
FLASH_ProgramHalfWord(addr,dat); //从指定也的addr地址开始写。
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
FLASH_Lock();
}
//从FLASH读取半个字
u16 FLASH_Read_HalfWord(u32 addr){
u16 data;
data = *(u16*)(addr); //从指定的地址读取数据。
return data;
}
有关数据存储读取的可靠性思考。一直以来,见过我司好多仪表的参数保存,都是直接一次写入到EEPROM或者FLASH中。 在设计时不考虑到,当程序正在写入参数断电时或上电抖动造成参数的存储和读取失效。这种失效后的保护机制如何设计?
拿STM32来说,如果FLASH充裕,可以将数据存储在3个页。(最好3个不连续的位置)。
1:存数据逻辑。对要写入的数据按模块或整体做校验,校验码作为存入参数的一部分,要写入FLASH。
存入第1个页,存好后,立刻读取,判断是否存好。然后依此操作存后面2页数据。
2:读数据逻辑。读取第1页数据后,做校验,看数据是否正确,如果不正确读后面2个。如果所有的页,数据都不正确,那么就使用程序原代码内值.同时产品要报出参数读取错误状态。
史海拾趣
|
:L 我正在做一个无磁芯变压器的研究,就是在PCB上直接印刷原副边的线圈,由于无磁芯,所以工作频率为MHz级,理论设计时需要计算交流电阻这一参数,我查阅的一些文献都没有太大的实际意义,那位大侠有办法?… 查看全部问答> |
|
前一阵,一些哈飞赛马车主的爱车陆续出现了更换火花塞过程中火花塞断裂的情况,有的气缸的火花塞点火电极有缺口,气缸严重窜气。株洲湘火炬火花塞厂技术、质量部近日提醒广大车主,火花塞是发动机点火系中故障较多的部件之一,在火花塞的选择、使用 ...… 查看全部问答> |
|
by Gorgon Meducer 傻孩子 http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=3668848 前言 这是一些关于人们眼中不可思议的“灵异事件”的调查报告。这些事件中,当事人往往在向当局 提交报告后便杳无音信,因此,这些档 ...… 查看全部问答> |
|
http://msdn.microsoft.com/en-us/library/dd187531.aspx 根据MSDN的描述,分以下几步骤去做? 1、进行蓝牙配对 2、用蓝牙建立虚拟串口,RegisterDevice.如:COM2! 3、将虚拟串口信息更新到已建立的拨号连接中RasSetEntryProperties. 4、启动 ...… 查看全部问答> |
|
我公司从事无线通讯,在罗湖区有一套90多m2的正规写字楼,此处于市区中心交通便利,周围环境优美;配带有各办公桌具、ADSL网络 现寻求从事工控行业的创业者一起创业合作 如果您创业需要有一个上好的办公环境,又希望尽可能节省成本,且享受高质量的 ...… 查看全部问答> |
|
为何我在pb4.2中 project.bib 改变后,增加了一个自己的程序到 file section, 在菜单中,选择 build -> make image 后,project.bib 被改写,我自己增加的部分消失了。 然后,nk.bin中就没有我的文件了。 这样,我岂不是没有办法加入自己的文件 ...… 查看全部问答> |




