历史上的今天
返回首页

历史上的今天

今天是:2025年04月16日(星期三)

正在发生

2021年04月16日 | 基于STM32单片机,FLASh先擦后写的函数分析案例

2021-04-16 来源:eefocus

FLASh 必须是先擦后写


下面的函数是分析案例


基于stm32单片机,FLASh先擦后写的函数分析案例


void FLASH_WriteByte(u32 addr ,u16 flashdata1)


{


FLASH_Status FLASHstatus = FLASH_COMPLETE;


FLASH_Unlock();//解锁FLASH编程擦除控制器


// FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清除标志位


FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);


/


FLASHstatus=FLASH_ErasePage(addr);//擦除指定地址页


FLASHstatus=FLASH_ProgramHalfWord(addr, flashdata1);//从指定页的addr地址开始写


//FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);


FLASH_Lock();//锁定FLASH编程擦除控制


}


基本顺序:解锁-》清除标志位(可以不要)-》擦除-》写半字-》清楚标志位(也可以不要)-》上锁。


如果 FLASH_START_ADDR是宏定义的0x8000000+2048*255


1. 0x8000000是Flash的起始地址


2. 2048是因为我用的是大容量芯片,根据上一笔记Flash地址可以看出芯片每页容量2K,即2048字节,


3. 255表示芯片的最后一页,这个根据不同芯片而定。之所以从后面页写起可以防止储存数据破坏用户程序。


4. addr*2是因为每个数据占用2字节(半字),虽然写入的是1字节数据,但是编程是2字节为单位,


也就是说一个字节的数据也会占用两个字节地址。


这个子函数就是将数据flashdata1写到地址addr中去。数据的长度是可变的。


当需要读入数据的时候可以直接访问地址,


如:rdata=*(u16 *)0x08014000; //读flash中默认数据


0x08014000是存储的地址。


推荐阅读

史海拾趣

CAROLCABLE公司的发展小趣事

CAROLCABLE公司的创立,标志着电子线缆行业迎来了一位新的竞争者。在电子科技飞速发展的时代背景下,创始人凭借对线缆技术的深刻理解和市场需求的敏锐洞察,决定创立CAROLCABLE公司。公司初期,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。然而,创始人凭借着坚定的信念和不懈的努力,带领团队克服了一个又一个困难。他们积极研发新产品,优化生产工艺,提高产品质量,逐渐在市场上站稳了脚跟。

随着公司业务的不断拓展,CAROLCABLE开始与一些知名的电子企业建立合作关系,为其提供高质量的线缆产品。这些合作不仅为公司带来了稳定的订单和收入,也进一步提升了CAROLCABLE在行业内的知名度和影响力。

AW Industries Inc公司的发展小趣事

随着市场竞争的加剧,AW Industries Inc意识到只有不断创新才能在行业中立足。公司加大了对研发的投入,并成功研发出了一款具有革命性的新型电子元件。这款元件不仅性能卓越,而且成本更低,迅速在市场上占据了主导地位。这一创新成果不仅为公司带来了丰厚的利润,也奠定了其在电子行业的领先地位。

Antenna Factor公司的发展小趣事

Antenna Factor公司始终注重产品质量和客户体验。他们建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的把控。同时,公司还加强了对售后服务的管理和改进,确保客户在使用过程中能够得到及时、有效的支持。这些举措使得Antenna Factor公司的产品质量和品牌形象得到了显著提升。

Antiference公司的发展小趣事

Antiference公司最初以生产电磁屏蔽材料起家,但随着电子设备的普及和电磁干扰问题的日益严重,公司意识到单纯的材料生产已无法满足市场需求。于是,Antiference投入巨资研发新型电磁干扰抑制技术,成功开发出了一款能够显著降低电磁干扰的芯片。这款芯片迅速在市场上获得了广泛认可,Antiference也因此成为了电磁干扰抑制领域的领军企业。

锋鸣电子(Fengming)公司的发展小趣事

福斯特集团(FIRST SEMI)作为另一家以“FIRST”为品牌的企业,在半导体芯片领域也取得了显著成绩。该集团成立于2010年,总部位于中国深圳,是一家集半导体芯片研发、方案设计、封装制造、测试编带、产品销售为一体的国家级高新技术企业。公司产品广泛应用于无人机、机器人、笔记本电脑、液晶电视等多个领域。通过在全球设立代理销售公司,福斯特集团的销售网络覆盖全球多个国家和地区,服务合作客户超过3000家。

BILIN公司的发展小趣事

在稳固光伏胶膜市场的同时,福斯特并未停止前进的步伐。公司积极拓展产品品类,进入电子新材料领域。2014年,公司开始开发PCB用感光干膜,进军电子信息产业。感光干膜作为PCB产业最核心的工艺材料之一,对电子信息产业的发展具有重要意义。福斯特凭借其技术实力和市场洞察力,迅速在该领域取得突破,成为行业内的佼佼者。至2020年,公司感光干膜销量大幅增长,为公司带来了新的增长点。

问答坊 | AI 解惑

linux与wince最根本的区别是什么-扫盲

让我们逐条分析评价Linux和WinCE/Windows的优缺点。 1.支持多种硬件平台由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁 ...…

查看全部问答>

C64X DSP EDMA小结及实例详解(ZZ)

C64X DSP EDMA小结 (1)EDMA概要          ①EDMA数据传输有两种发起方式:          CPU发起的EMDA数据传输(非同步方式):需要传输时,CPU设置ESR寄存器的相应位为1 ...…

查看全部问答>

关于FPGA和CPLD,选择哪一个比较好?

FPGA:Field Programmable Gate Array(现场可编程门阵列) CPLD:Complex programmable logic devices(复杂可编程逻辑器件) 这两者之间的主要区别是什么?对于高速的电路系统,选择哪一个比较好? 笼统的说,两者的区别在于资源的规模和芯片 ...…

查看全部问答>

C51键盘程序

各位有知道   键盘程序中  if ((P1&0xf0)!=0xf0)        ;scancode = 0xfe;                         while((scancode&0x10)!=0)  & ...…

查看全部问答>

杭州汇文怎么样?

杭州汇文怎么样?能学到很多有用的东西吗? 还是骗人的啊…

查看全部问答>

关于串口的一个小问题

#include #define uchar unsigned  char #define uint  unsigned  int unsigned char a        ,flag,i; void init() {    TMOD=0X20;    TH1=0XFD;     ...…

查看全部问答>

关于SLE4442读写问题:

关于SLE4442读写问题:     我用初始密码0XFF 0XFF  0XFF,效验成功,  读加密存储器器数据为7000FFFF ,         修改密码,0XF1 0XF1  0XF1,效验失败, 读加密存储器器数据为 ...…

查看全部问答>

WINCE60上的挂起与唤醒功能怎么做啊?有没做过的人啊?能不能通过触摸屏点击唤醒系统?

WINCE60上的挂起与唤醒功能怎么做啊?有没做过的人啊?能不能通过触摸屏点击唤醒系统?…

查看全部问答>

"EVC高级编程与应用"中第11章TCP例程的使用问题!

在EVC中把程序编译好了,下到板子上的WINCE系统中运行;主机上的程序在wince的模拟器中运行。当把服务器端程序运行在主机模拟器上,把客户端程序运行在板子上,相互是可以通信的。但把两者运行的地方交换,就不能通信了,为什么??根据服务器的地 ...…

查看全部问答>

程序

大家可以对比一下程序就明白了, ASII_TAB.c里还有我的签名, 楼主还没能改掉! 边屏的主机接口都和咱的是一样的. STM32_FSMC_7.0_8bit.rar (465.28 KB) 下载次数:26 2010-12-13 11:00 …

查看全部问答>