公司产品使用stm32f103rct6,flash数据莫名被改变
我的程序中设定stm32的地址0x08037800以后的地址用来存储数据,当我使用数据的时候我就会从地址0x08037800来读取,这程序已经用在几万台产品上了,可最近出现2次很奇怪的现象,我读数据的时候前几次是正常的,然后突然就不正常了,用仿真时发现有3个字节的值被改成了0x00,我想不通这3个字节的值为什么会改变,如果是误擦除的话stm32也是擦除一页的,不可能是3个字节,而且不会变成0x00,而是0xff。我实在想不通求各位帮忙。图上的结构体就是我仿真的这图是程序正常时仿真的,那2次很奇怪的现象就是结构体里面的userCode前3个字节被改成了0x00再次确认一下,地址0x08037800是否在下载程序占用的flash地址以外。
如果地址0x08037800和程序占用的flash地址冲突,便会出现数据在运行时被更改的情况。 有可能跟其它的数据冲突了,都是用了同一个地址。 建议楼主排查一下MAP文件,这个地址附近都是哪些定义或者函数。还有,会不会是自己写入数据的试试,缓冲区被别的地方冲掉,导致写入的就是错误的呢? 谢谢楼上几位朋友,楼主问题如果解决了回复一下哦,如果没有,可以继续追问滴:) stm32f103rct6的flash是256K的,你存储数据是从222K地方开始的。检查下你的程序编译完后已占用的flash大小。如果用的是keil 编译完后会有“Program Size: Code=113868 RO-data=344256 RW-data=1016 ZI-data=60608” Code+RO-data就是实际下到flash中的大小。你这种情况很可能是程序已超过222k了。 可能是参数搞错了,指向错误的地址
页:
[1]