OpenEdv-开源电子网

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

关于内部FLASH擦除的问题

[复制链接]

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-8-31 10:24:41 | 显示全部楼层 |阅读模式

int main(void)
{
 delay_init(8);
 init_lcd();
 address = (u32 *)0x08000000;
 //*********解锁*********
 FLASH->KEYR = KEY1;
 FLASH->KEYR = KEY2;
 //**********************
 //*********擦除*********
 num = FLASH->CR;
 FLASH->AR = 0;
 FLASH->CR |= 1 << 1;    //页擦除
 FLASH->CR |= 1 << 6; //开始擦除
 num = FLASH->SR;    //检测BUSY位
 while(num&(1<<0))
  num=FLASH->SR;

}


 

当执行完开始擦除 单片机就死了,请问这是为什么啊??

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 12:39:11 | 显示全部楼层
回复 支持 反对

使用道具 举报

31

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2012-5-18
在线时间
6 小时
发表于 2012-8-31 13:56:29 | 显示全部楼层
回复【2楼】lsj9383:
---------------------------------
再顶你个肺~
谁来买我的火柴.....
回复 支持 反对

使用道具 举报

4

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-8-22
在线时间
0 小时
发表于 2012-8-31 14:17:28 | 显示全部楼层
这是因为address = (u32 *)0x08000000 
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 14:46:09 | 显示全部楼层
回复【4楼】stm0574:
---------------------------------
但是我在程序里还并没有用到address啊、、、
我选的FLASH->AR=0嘛、删除第零页是不行的吗?
回复 支持 反对

使用道具 举报

4

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-8-22
在线时间
0 小时
发表于 2012-8-31 14:49:06 | 显示全部楼层
你的程序放在哪里的?如果你的程序放在后面,你擦0页没问题。
如果你的程序默认从0页开始,那么你擦了0页也就擦了程序。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 15:02:48 | 显示全部楼层
回复【6楼】stm0574:
---------------------------------
我是通过SWD下载程序的,我也不是很清楚程序存放在哪儿、
如果我程序存放在前面,那么我擦去31页应该没问题吗?
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 15:12:42 | 显示全部楼层
回复【6楼】stm0574:
---------------------------------
我改成擦除31页也一样、、
回复 支持 反对

使用道具 举报

4

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-8-22
在线时间
0 小时
发表于 2012-8-31 15:17:14 | 显示全部楼层
你先在调试模式下,观察要擦除的页面是否有数据,如果没有数据的页面通常都是FF或者00,如果有别的数据,那么说明这页有数据,如果你擦除了就破坏了页面的完整性。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 15:19:04 | 显示全部楼层
回复【9楼】stm0574:
---------------------------------
每当我加上FLASH->CR |= 1 << 6; //开始擦除,就无法进入调试模式,不知道为什么、
当我注释掉它,就可以进入调试模式。
有FLASH->CR |= 1 << 6; //开始擦除,的时候会进入汇编页面,然后怎么都无法执行程序、
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 15:52:11 | 显示全部楼层
我现在是全部擦除后 在重新数据可以,但是页擦除老要卡着,感觉上是清除错了位置、但是明明就设置了FLASH->AR=31啊、、
全部擦除后虽然要卡机一次,但却是是擦除了,31页的数据位全是1,
但是页擦除也要卡机一次,但却没擦除、所以我感觉应该是擦除的位置是错的、、
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
 楼主| 发表于 2012-8-31 16:02:31 | 显示全部楼层
哦 我懂了,终于可以了,FLASH->AR是代表的页地址啊,我还以为代表页数,手册说的模棱两可的、、
回复 支持 反对

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
发表于 2012-10-16 11:45:34 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2014-12-2
在线时间
34 小时
发表于 2016-9-23 17:23:07 | 显示全部楼层
兄弟,这个到底能擦不,我现在也遇到这样的问题
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 20:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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