OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 43995|回复: 57

学习STM32F407的FLASH编程,碰到一个超郁闷的问题,耗了哥2个晚上啊!!!

  [复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-11-17 02:32:00 | 显示全部楼层 |阅读模式
昨天搞到3点多,今晚又搞到2半....
终于被我发现问题了.
现象:
如下代码:
//从指定地址开始写入指定长度的数据
//该函数对OTP区域也有效!可以用来写OTP区!
//OTP区域地址范围:0X1FFF7800~0X1FFF7A0F
//WriteAddr:起始地址(此地址必须为4的倍数!!)
//pBuffer:数据指针
//NumToWrite:字(32位)数(就是要写入的32位数据的个数.) 
void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)
u8 status=0;
u32 addrx=0;
u32 endaddr=0;
  if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return; //非法地址
STMFLASH_Unlock(); //解锁  
addrx=WriteAddr; //写入的起始地址
endaddr=WriteAddr+NumToWrite*4; //写入的结束地址
if(addrx<0X1FFF0000) //只有主存储区,才需要执行擦除操作!!
{
while(addrx<endaddr) //扫清一切障碍.(对非FFFFFFFF的地方,先擦除)
{
if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)//有非0XFFFFFFFF的地方,要擦除这个扇区
{   
                                printf("S");
status=STMFLASH_EraseSector(STMFLASH_GetFlashSector(addrx));
if(status)break; //发生错误了
}else addrx+=4;
}
if(status==0)
{
while(WriteAddr<endaddr)//写数据
{
if(STMFLASH_WriteWord(WriteAddr,*pBuffer))//写入数据
break; //写入异常
}
WriteAddr+=4;
pBuffer++;
STMFLASH_Lock();//上锁

红色的printf,加上,程序运行正常.
红色的printf去掉,程序随即进入死循环,死在等待FLASH空闲里面,一旦JTAG仿真,并设置断点在这里,则可以不要printf,也可以正常运行.
非常诡异.

试过的方法:
1,找官方代码替换掉我的代码,结果,失败.
2,把printf,换成延时,失败.
3,把代码结构改了,失败.
4,把printf,换成直接写DR的方式发送,失败.
5,清FLASH->SR标记位,失败.
6,将系统的delay_us,换成i--之类的延时,失败.
7,加多等待FLASH操作结束,失败.
...

总之,2个晚上,就在不停的尝试各种可能的解决方案.不停的刷代码,估计这板子上的F4,都快要被我刷爆了...


最后,眼看着今晚又要3点了,万念俱灰之际,找来stm32f4的编程手册(其实一直在看,寄存器看了N遍了...),发现


这感情十分吻合啊,bus stall...
shit,才想起来,在系统时钟初始化的时候,默认是设置了DATA FETCHES的,仿真看下FLASH->ACR的DCEN位,果然是1.

立即修改代码如下:
//从指定地址开始写入指定长度的数据
//该函数对OTP区域也有效!可以用来写OTP区!
//OTP区域地址范围:0X1FFF7800~0X1FFF7A0F
//WriteAddr:起始地址(此地址必须为4的倍数!!)
//pBuffer:数据指针
//NumToWrite:字(32位)数(就是要写入的32位数据的个数.) 
void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)
u8 status=0;
u32 addrx=0;
u32 endaddr=0;
  if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return; //非法地址
STMFLASH_Unlock(); //解锁 
  FLASH->ACR&=~(1<<10); //FLASH擦除期间,必须禁止数据fetch!!!搞了我两晚上才发现这个问题!
addrx=WriteAddr; //写入的起始地址
endaddr=WriteAddr+NumToWrite*4; //写入的结束地址
if(addrx<0X1FFF0000) //只有主存储区,才需要执行擦除操作!!
{
while(addrx<endaddr) //扫清一切障碍.(对非FFFFFFFF的地方,先擦除)
{
if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)//有非0XFFFFFFFF的地方,要擦除这个扇区
{   
status=STMFLASH_EraseSector(STMFLASH_GetFlashSector(addrx));
if(status)break; //发生错误了
}else addrx+=4;
}
if(status==0)
{
while(WriteAddr<endaddr)//写数据
{
if(STMFLASH_WriteWord(WriteAddr,*pBuffer))//写入数据
break; //写入异常
}
WriteAddr+=4;
pBuffer++;
}
FLASH->ACR|=1<<10; //FLASH擦除结束,开启数据fetch
STMFLASH_Lock();//上锁

下载,测试....

奇迹出现了...运行正常了.
我勒个去...

两个晚上,换来2行代码.....

诶,说起来都是泪啊,谁怪我没好好看看编程手册,早点看到这里就好了....

本来今晚想早点解决看个电影再睡觉的...
计划赶不上变化...
夜深了,明天还要上班,洗洗睡了....


此文,献给那些和我一样,被一个傻逼的问题搞到傻逼的人....

















































我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
发表于 2013-11-17 08:26:40 | 显示全部楼层
不错不错。原子大哥,每个人都有这样的经历吧
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-1-10
在线时间
8 小时
发表于 2013-11-17 08:29:48 | 显示全部楼层
辛苦啊,表示理解。
F4系列还是有不少坑,宣传的是I/O与F1系列兼容,你要不仔细看还真绝不出毛病来,
仔细一看,有一对vcc和gnd与F1系列正好相反。当时就有点想砍人的冲动
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-11-17 10:57:59 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
有时候还真是这样郁闷,上次搞个家伙也是,花上几个晚上就换来几行代码,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
 楼主| 发表于 2013-11-17 11:06:49 | 显示全部楼层
恩,关键这种问题,不好定性,只能慢慢摸...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

195

帖子

2

精华

高级会员

Rank: 4

积分
646
金钱
646
注册时间
2013-7-23
在线时间
1 小时
发表于 2013-11-17 12:33:20 | 显示全部楼层
原子大哥,现在研究F407了?准备出个F407的板子?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
 楼主| 发表于 2013-11-17 16:48:09 | 显示全部楼层
回复【6楼】pizhihui1993:
---------------------------------
在学习。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

168

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2013-4-1
在线时间
25 小时
发表于 2013-11-17 21:05:06 | 显示全部楼层
终于知道原子哥这一手牛逼的代码是怎么“写”出来的了,好好向原子哥学习!
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-11-18 09:55:32 | 显示全部楼层
看来准备出F4的板子了
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

9

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-11-18 10:45:30 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥。。那为什么加上Printf("S");也OK啊?
人需要沐浴阳光,也必将经历风雨
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
 楼主| 发表于 2013-11-18 14:38:50 | 显示全部楼层
回复【10楼】LOVE_FYD:
---------------------------------
这我也不知道.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-18 14:50:45 | 显示全部楼层
你在前面埋坑,我们尾行你,辛苦了,呵呵
回复 支持 反对

使用道具 举报

14

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2011-10-14
在线时间
2 小时
发表于 2013-11-18 17:18:24 | 显示全部楼层
辛苦辛苦啊
回复 支持 反对

使用道具 举报

2

主题

1444

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2236
金钱
2236
注册时间
2010-12-16
在线时间
198 小时
发表于 2013-11-18 19:46:39 | 显示全部楼层
是不是没有检查本次编程完毕就进入下一次编程?printf占用的时间是比较可观的,特别是发串口.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
 楼主| 发表于 2013-11-19 11:03:14 | 显示全部楼层
回复【14楼】shihantu:
---------------------------------
不是这个,我用delay_ms(1000),都不行。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

1444

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2236
金钱
2236
注册时间
2010-12-16
在线时间
198 小时
发表于 2013-11-19 14:14:32 | 显示全部楼层
那就奇怪了.有空翻翻我这边的代码...
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-11-19 17:32:05 | 显示全部楼层
这段时间 一直在 做那 软解MP3的程序 ,搞到后面 发现 一直调不通DAC ,郁闷死我了,是ZET6144pin 的,各种方法都测试了。怎么都不会输出波形。
1-1
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-4-9
在线时间
0 小时
发表于 2013-11-19 20:17:17 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
原子哥加油!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
 楼主| 发表于 2013-11-19 22:57:36 | 显示全部楼层
回复【17楼】mygod:
---------------------------------
今晚打算搞IIS,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2013-11-20 09:59:51 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
很不错了,学51的时候有个ds1302我查程序5天都没找到原因。实在火大,用电烙铁拆换了ds1302,问题才解决。原来的问题是读出来的时间不按正常逻辑,前一秒是6:50分31秒,过一会就9点多了,或者时间倒流4点多。我彻底给made in China跪了。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2013-11-20 15:33:25 | 显示全部楼层
呵呵。
 
 
原子出个429,439板子吧。
呵呵。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-11-17
在线时间
0 小时
发表于 2013-11-20 15:42:27 | 显示全部楼层
加油 啊
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2013-11-21 08:07:11 | 显示全部楼层
厉害!
回复 支持 反对

使用道具 举报

48

主题

376

帖子

0

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2011-3-18
在线时间
7 小时
发表于 2013-11-21 10:18:03 | 显示全部楼层
原來原子也會有這情況,我好多時也有這情況出現呢,十多句代碼,要用一天,有時也見有些人說很多天也不成功,寫代碼就是要耐性和頭腦的考驗
回复 支持 反对

使用道具 举报

86

主题

983

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1848
金钱
1848
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-1-6 14:12:25 | 显示全部楼层
顶原子
回复 支持 反对

使用道具 举报

28

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
445
金钱
445
注册时间
2013-8-10
在线时间
37 小时
发表于 2015-1-6 17:13:43 | 显示全部楼层
都是大神啊,学习
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-31
在线时间
0 小时
发表于 2015-1-8 13:02:40 | 显示全部楼层
花擦泪
原子大哥也要上班?
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-3-2
在线时间
7 小时
发表于 2016-3-3 15:32:05 | 显示全部楼层
看了这个之后,很有感触!!!!现列如下:
1. 看懂英文文档很重要。
2. 佩服原子的努力!
3. 我有时候也被傻逼的问题搞到傻逼,芯片快被刷爆。
4. 我没有自己写过底层驱动,比如IIC,Flash编程,IIS,SPI等。请问原子哥,这样对自己发展是不是不好?
5. 我该反省一下自己。
回复 支持 反对

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2016-3-4 12:44:50 | 显示全部楼层
谢谢原子哥分享您的经历,我也遇到过这样的情况。慢慢摸索、克服困难,才有点成果
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2016-3-5 11:22:03 | 显示全部楼层
EFM32系列的FLASH操作也是坑
态度决定一切
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-3-17
在线时间
7 小时
发表于 2016-3-18 16:09:41 | 显示全部楼层
支持原子哥
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2016-3-16
在线时间
7 小时
发表于 2016-3-29 09:25:44 | 显示全部楼层
原子哥厉害!学习了~
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2011-12-23
在线时间
5 小时
发表于 2016-4-26 12:05:04 | 显示全部楼层
太感谢你的经验分享了
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2016-2-19
在线时间
16 小时
发表于 2016-4-26 12:46:38 | 显示全部楼层
谢谢原子哥,学习了
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-3-26
在线时间
45 小时
发表于 2016-4-26 13:32:17 | 显示全部楼层
原在大神原子哥也有遇到过难题
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2016-7-19
在线时间
12 小时
发表于 2016-8-2 17:40:52 | 显示全部楼层
学习了,
回复 支持 反对

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
发表于 2016-8-2 22:36:04 | 显示全部楼层
如果要对flash处理的话,建议把相应的处理程序搬运到ram中来执行,这样就能彻底避免上述问题了
回复 支持 反对

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-4-17
在线时间
32 小时
发表于 2016-8-3 11:20:41 | 显示全部楼层
搞SDRAM代码,可以正常运行,但是ltdc无法配置正确,代码翻了N遍,搞了好几天,最后才发现SDRAM中GPIO少初始化个PI3 。
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-28
在线时间
6 小时
发表于 2016-8-4 17:30:17 | 显示全部楼层
我想问一下你们遇到这样的问题是怎样一步步给定位找原因解决的
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-28
在线时间
7 小时
发表于 2016-8-5 22:31:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2016-7-19
在线时间
12 小时
发表于 2016-8-18 17:32:34 | 显示全部楼层
原子哥,我给你点一百个赞,感谢你无私的分享,
回复 支持 反对

使用道具 举报

1

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2016-8-15
在线时间
20 小时
发表于 2016-9-9 17:17:57 | 显示全部楼层
哈哈哈哈哈哈哈
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-7-23
在线时间
0 小时
发表于 2016-9-13 18:03:37 | 显示全部楼层
这个问题搞了一下午,各种延时,各种清标志位,还是不行。好在原子哥碰到过这问题。感谢。顺便说一句,在STMFLASH_ReadWord()函数里面加printf("S")也能正常读写,不过治标不治本。
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2016-6-28
在线时间
15 小时
发表于 2016-12-22 17:10:41 | 显示全部楼层
dyc1229 发表于 2013-11-17 08:29
辛苦啊,表示理解。
F4系列还是有不少坑,宣传的是I/O与F1系列兼容,你要不仔细看还真绝不出毛病来,
仔细 ...

板子回来了,一切正常。焊接好,发现芯片发烫...去他奶奶
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2016-4-15
在线时间
106 小时
发表于 2016-12-22 22:05:54 | 显示全部楼层
辛苦了,原子哥
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-9-28
在线时间
2 小时
发表于 2017-3-16 11:50:54 | 显示全部楼层
给原子赞一个
回复 支持 反对

使用道具 举报

0

主题

409

帖子

0

精华

高级会员

Rank: 4

积分
854
金钱
854
注册时间
2017-2-25
在线时间
145 小时
发表于 2017-3-16 12:12:09 | 显示全部楼层
dyc1229 发表于 2013-11-17 08:29
辛苦啊,表示理解。
F4系列还是有不少坑,宣传的是I/O与F1系列兼容,你要不仔细看还真绝不出毛病来,
仔细 ...

这绝对是一个深坑。
回复 支持 反对

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-6-13
在线时间
19 小时
发表于 2017-4-7 12:05:51 | 显示全部楼层
问一下原子哥,F429的Flash一个扇区那么大,而擦除时又只能以扇区为单位擦除,我要将地址0x0807xxxx以后的区域用来保存数据以实现掉电不丢失,比如我要写的是4个字节或者2个字节,也必须要擦除整个扇区吗?那这样就将之前写的其他数据擦除了,问一下你这个怎么处理呢?先将扇区所有数据都读出来也不可能,太大了没地方放,难道我存一个16位的数据也要单独存入一个扇区?
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-4-15
在线时间
9 小时
发表于 2017-6-19 16:08:33 | 显示全部楼层
请问if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)//有非0XFFFFFFFF的地方,要擦除这个扇区,这里是不是只需要擦除一次就可以了啊?
回复 支持 反对

使用道具 举报

29

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2016-12-29
在线时间
100 小时
发表于 2017-6-20 09:37:51 | 显示全部楼层
隨颩洏過 发表于 2017-4-7 12:05
问一下原子哥,F429的Flash一个扇区那么大,而擦除时又只能以扇区为单位擦除,我要将地址0x0807xxxx以后的区域 ...

flash要想写就要先擦除
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 02:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表