你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

公司产品使用stm32f103rct6,flash数据莫名被改变

[复制链接]
汇鑫 提问时间:2014-11-6 13:50 /
我的程序中设定stm32的地址0x08037800以后的地址用来存储数据,当我使用数据的时候我就会从地址0x08037800来读取,这程序已经用在几万台产品上了,可最近出现2次很奇怪的现象,我读数据的时候前几次是正常的,然后突然就不正常了,用仿真时发现有3个字节的值被改成了0x00,我想不通这3个字节的值为什么会改变,如果是误擦除的话stm32也是擦除一页的,不可能是3个字节,而且不会变成0x00,而是0xff。我实在想不通求各位帮忙。图上的结构体就是我仿真的 1.jpg 这图是程序正常时仿真的,那2次很奇怪的现象就是结构体里面的userCode前3个字节被改成了0x00
收藏 评论6 发布时间:2014-11-6 13:50

举报

6个回答
Dylan疾风闪电 回答时间:2014-11-6 16:31:31
再次确认一下,地址0x08037800是否在下载程序占用的flash地址以外。
如果地址0x08037800和程序占用的flash地址冲突,便会出现数据在运行时被更改的情况。
那片清茶 回答时间:2014-11-6 21:31:41
有可能跟其它的数据冲突了,都是用了同一个地址。
回答时间:2014-11-7 15:51:55
建议楼主排查一下MAP文件,这个地址附近都是哪些定义或者函数。还有,会不会是自己写入数据的试试,缓冲区被别的地方冲掉,导致写入的就是错误的呢?
沐紫 回答时间:2014-11-10 09:47:14
谢谢楼上几位朋友,楼主问题如果解决了回复一下哦,如果没有,可以继续追问滴
飞翔的起点 回答时间:2014-11-10 14:38:29
stm32f103rct6的flash是256K的,你存储数据是从222K地方开始的。检查下你的程序编译完后已占用的flash大小。如果用的是keil 编译完后会有“Program Size: Code=113868 RO-data=344256 RW-data=1016 ZI-data=60608  ”    Code+RO-data就是实际下到flash中的大小。你这种情况很可能是程序已超过222k了。
feixiang20 回答时间:2014-11-10 23:33:55
可能是参数搞错了,指向错误的地址
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版