STM32F407片内FLASH擦除失败问题

  问题表现在片内FLASH只能写0不能写1,故想到可能是擦除失败。

  Debug发现果然HAL_FLASHEx_Erase(&FlashEraseInit,&SectorError);函数返回的FlashStatus始终是HAL_ERROR;

  调试发现HAL库中调取FLASH标志位时会出现错误,几经修改都无法避免,甚至复位重烧都不起作用,只有通过STVP才能勉强擦除。

  后来上网查阅资料发现有网友在擦除前先对FLASH标志位清除,便尝试了一下。修改代码后果然可以跑通,但是这种办法应当存在隐患,相当于ban掉了这一步擦除时的FLAG判断。

  由于时间紧迫,以后再仔细研究到底是什么引起的置位错误标志位。

  

1 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);
2 
3  

 

posted @ 2021-07-20 15:07  Douzen  阅读(3267)  评论(0)    收藏  举报