问题描述
之前是在Flash中写入了一些参数,读取一直是正常的,但是今天修改了一些程序后再次刷入程序,跑的时候却发现写在Flash中的参数崩了。
解决方案
Debug观察Flash中的数据,发现在写参数的扇区中的数据变成了乱码,怀疑是刷入了程序,于是检查了程序的大小对比当前Flash的地址,发现果然是程序的大小超过了写参数的Flash地址的大小。
程序总大小 (129520+7152+836+23356)/1024=157KB
参数写在扇区5 5个扇区总大小 16+16+16+16+64=128KB<157KB
因此 刷的程序与写参数的内存地址产生了冲突导致出现问题,而不进行修改直接强行刷参数会导致刷进去的程序被强行修改,从而进入HardFault