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