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  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM