历史上的今天
返回首页

历史上的今天

今天是: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个。如果所有的页,数据都不正确,那么就使用程序原代码内值.同时产品要报出参数读取错误状态。


推荐阅读

史海拾趣

Aimtec公司的发展小趣事

随着业务规模的扩大,Aimtec公司开始将目光投向国际市场。公司先后在欧洲和亚洲设立了办事处,通过本地化的销售策略和技术支持,逐步打开了国际市场的大门。在国际竞争中,Aimtec凭借其优质的产品和服务,赢得了众多客户的信赖和好评。同时,公司还积极参与国际电子行业的交流与合作,不断提升自身的技术水平和市场竞争力。

爱普特微(aptchip)公司的发展小趣事

随着产品的广泛应用和市场的不断拓展,爱普特微电子逐渐获得了业界的广泛认可。公司屡获殊荣,包括“国家级专精特新小巨人”、“中国IC独角兽”、“中国TOP 50国产MCU厂商”等。这些荣誉的获得,不仅是对公司技术实力和市场表现的肯定,更是对公司未来发展的鼓励和期待。

冠图电子(GTL-POWER)公司的发展小趣事

创立不久,爱普特微电子便迎来了一次重大的技术突破。公司成功研发出了全国产、全自主可控、高可靠性的32位微处理器芯片。这一产品的推出,不仅填补了国内市场的空白,更以其卓越的性能和稳定性,赢得了市场的广泛认可。随后,公司又基于自研IP库及RISC架构内核,量产了一系列全国产高可靠性32位MCU产品,广泛应用于工业控制、物联网、智能家电等领域。

Electech Electronics公司的发展小趣事

Electech Electronics公司成立于XXXX年,由几位在电子行业有丰富经验的工程师共同创立。起初,公司主要专注于电子元器件的代理和销售,为本地的小型电子产品制造商提供服务。通过不懈的努力和对市场敏锐的洞察力,Electech Electronics逐渐在本地市场中建立了良好的声誉。

Heatron公司的发展小趣事

随着市场对个性化需求的增加,Heatron公司敏锐地捕捉到了这一趋势。公司成立了专门的定制化服务团队,致力于为客户提供从设计到生产的全方位解决方案。无论是特殊尺寸的加热器,还是具有特定功能的电加热元件,Heatron都能根据客户需求快速响应并高效完成。这种以客户为中心的服务模式,帮助Heatron在竞争激烈的市场中脱颖而出,赢得了众多知名企业的青睐。

FILTRONIC公司的发展小趣事

随着市场需求的不断增长,FILTRONIC开始着手拓展产品线,从单一的滤波器产品扩展到包括射频模块、天线等在内的多种无线通信产品。同时,公司也积极实施国际化战略,通过参加国际展会、设立海外办事处等方式,逐步打开了国际市场的大门。FILTRONIC的产品以其卓越的性能和可靠的质量赢得了全球客户的信赖,公司也因此实现了业务的快速增长。

问答坊 | AI 解惑

PCB导线交流电阻的计算

:L 我正在做一个无磁芯变压器的研究,就是在PCB上直接印刷原副边的线圈,由于无磁芯,所以工作频率为MHz级,理论设计时需要计算交流电阻这一参数,我查阅的一些文献都没有太大的实际意义,那位大侠有办法?…

查看全部问答>

火花塞使用维护有“七忌”

前一阵,一些哈飞赛马车主的爱车陆续出现了更换火花塞过程中火花塞断裂的情况,有的气缸的火花塞点火电极有缺口,气缸严重窜气。株洲湘火炬火花塞厂技术、质量部近日提醒广大车主,火花塞是发动机点火系中故障较多的部件之一,在火花塞的选择、使用 ...…

查看全部问答>

AVR 单片机应用设计

AVR 单片机应用设计…

查看全部问答>

AVR之X档案——少儿不宜的深夜档节目(转)

by Gorgon Meducer 傻孩子 http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=3668848 前言     这是一些关于人们眼中不可思议的“灵异事件”的调查报告。这些事件中,当事人往往在向当局 提交报告后便杳无音信,因此,这些档 ...…

查看全部问答>

来看看Stellaris在TI布局中的作用

来张全家福 无疑,Stellaris的到来,加速了TI ARM布局。为cortex系列内核引来了一个更为强大的竞争对手。…

查看全部问答>

wince下如何实现自动蓝牙拨号(dun)?

http://msdn.microsoft.com/en-us/library/dd187531.aspx 根据MSDN的描述,分以下几步骤去做? 1、进行蓝牙配对 2、用蓝牙建立虚拟串口,RegisterDevice.如:COM2! 3、将虚拟串口信息更新到已建立的拨号连接中RasSetEntryProperties. 4、启动 ...…

查看全部问答>

寻找工控行业的创业伙伴(限深圳)

我公司从事无线通讯,在罗湖区有一套90多m2的正规写字楼,此处于市区中心交通便利,周围环境优美;配带有各办公桌具、ADSL网络 现寻求从事工控行业的创业者一起创业合作 如果您创业需要有一个上好的办公环境,又希望尽可能节省成本,且享受高质量的 ...…

查看全部问答>

想请嵌入式的讲师

本培训中心想聘请高端的嵌入式开发方面的讲师,很希望有这方面阅历的人才能帮忙!有意者请联系:010-51527244,邮箱:gongyan@iccss.com.cn,详细情况请您登录:www.csst.com.cn…

查看全部问答>

project.bib

为何我在pb4.2中 project.bib 改变后,增加了一个自己的程序到 file section, 在菜单中,选择 build -> make image 后,project.bib 被改写,我自己增加的部分消失了。 然后,nk.bin中就没有我的文件了。 这样,我岂不是没有办法加入自己的文件 ...…

查看全部问答>