問題描述
之前是在Flash中寫入了一些參數,讀取一直是正常的,但是今天修改了一些程序後再次刷入程序,跑的時候卻發現寫在Flash中的參數崩了。
解決方案
Debug觀察Flash中的數據,發現在寫參數的扇區中的數據變成了亂碼,懷疑是刷入了程序,於是檢查了程序的大小對比當前Flash的地址,發現果然是程序的大小超過了寫參數的Flash地址的大小。
程序總大小 (129520+7152+836+23356)/1024=157KB
參數寫在扇區5 5個扇區總大小 16+16+16+16+64=128KB<157KB
因此 刷的程序與寫參數的內存地址產生了衝突導致出現問題,而不進行修改直接強行刷參數會導致刷進去的程序被強行修改,從而進入HardFault