无薪税绵 发表于 2016-9-1 13:22:56

建议楼主更改一下删除地址。
例如:由0x08000000改为0x08010000。

qunda 发表于 2016-9-1 16:23:59

FLASH_ErasePage((uint32_t)0x08000000)感觉地址不对劲。

huaiqiao 发表于 2016-9-1 21:45:14

这个有个st的官方的flash编程手册,下载下来好好看看恩。没搞过这个。。。

feixiang20 发表于 2016-9-1 22:13:16

确认循环对嘛

ppaaddss 发表于 2016-9-2 08:22:22

本帖最后由 ppaaddss 于 2016-9-2 09:31 编辑

你这么做,应带都不是停在FLASHStatus = FLASH_ErasePage((uint32_t)0x08000000);这个函数了
而是直接进入了硬件错误中断中了。
因为编译器编译程序源码后的区域应该都是不可写入的。
具体程序是存储在什么地方,存储了多大的空间。。。这个需要根据编译器配置和程序的大小。。。余下的空间只要不超过片内FLASH的最大存储量应该都是可以擦除的。

moyanming2013 发表于 2016-9-2 10:59:42

1.不可能实现存放代码的flash扇区被自己擦除!擦除时的代码还要运行,擦除了运行哪里呢?!
2.你大概是要IAP吧。就是程序既可以运行也可以烧录新固件,那么此时需要参考如下官方的推荐方式:
分配一个IAP代码区和一个用户代码区,每个区都有向量表和代码。其实,每个区都是一个独立的MCU程序,只是功能不一样。
IAP代码区执行的是截获用户的一些特殊操作,然后烧录用户代码;否则执行用户代码。这里面的关键是使用了向量表的重定位功能。
你参考下图吧(参考AN4657):

湉湉 发表于 2016-9-4 00:05:00

0x0800 0000 中断向量表的位置,你删除了,程序的一些中断找不到中断服务程序了,导致异常了吧

蝶舞娇阳 发表于 2016-9-5 09:14:48

回复的很明白了
页: 1 [2]
查看完整版本: STM32F103的Flash擦除问题