STM32 Flash无法擦除,求指教

2019-08-11 17:20发布

芯片型号STM32F030C8T6
芯片从产线用烧录器烧录后,拿回实验室时,连接STLink的read保护等级是1
自己写代码进行在线升级,Application收到在线烧录命令后,擦除flash,代码如下,返回失败码02。
并不是每块板子都会这样,而且有些板子第一次在线烧录是OK的,第二次在线烧录就不OK了,失败的时候,每次FLASH_ErasePage函数返回的值都是2,求原子哥指教
另外,#define BOOT_FLAG_ADDR          (uint32_t)0x0800E800

FLASH_SetLatency(FLASH_Latency_1);      
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);  
temp=FLASH_ErasePage(BOOT_FLAG_ADDR);
//while(1)
  //{Send_Number(temp);}
SoftReset();
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Riven丶叮当
1楼-- · 2019-08-11 22:08
 精彩回答 2  元偷偷看……
milkshamo
2楼-- · 2019-08-11 23:00
Riven丶叮当 发表于 2017-10-26 17:59
代码看的不是很懂,擦除的区域擦除后上锁了么?而且你擦除的区域就只有BOOT_FLAG_ADDR这一页要擦除么?

当前逻辑此时只要擦除那一页,没有加锁,但应该不影响前面的擦除动作
milkshamo
3楼-- · 2019-08-11 23:14
顶起,求指导

一周热门 更多>