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

STM32F103RC变量初始化问题

[复制链接]
Leon Yang 提问时间:2020-11-23 14:00 /
定义长度为7的短整型数组:u16 ArryTest[7];
再定义一个短整形变量 u16 Test0 = 0;
编译后,如果Test0的地址被编译到数组ArryTest[7]的下一个地址,则Test0变量的值一直是0x03,并且无法被初始化其他值。
例如:ArryTest[7]的地址为0x20000200,Test0 的地址为0x2000020e,则Test0 的值无法被修改,一直为0x03.
有哪位朋友遇到过这样的问题没有?
收藏 评论10 发布时间:2020-11-23 14:00

举报

10个回答
linun 回答时间:2020-11-23 14:24:27
使用vu16 定义试一下
wenyangzeng 回答时间:2020-11-23 15:06:39
可能是数组定义后没有初始化,而变量先于数组初始化了所引起的。这个变量在RAM的位置当然不在数组后面哦!
建议定义数组后马上初始化看看:
u16 ArayTest[7]={0x0000,0x0000,0x000,0x0000,0x0000,0x0000,0x0000};
废鱼 回答时间:2020-11-23 15:17:52
楼主再什么情况下确认值不变的?建议在线仿真,进入MAIN函数后,看一下test值,单步运行,同时再watch窗口看一下test的值。
tanic 回答时间:2020-11-23 18:43:45
如楼主描述,不会出现此种情况,肯定现象没搞对
wudianjun2001 回答时间:2020-11-23 19:46:37
这么低级的问题应该不会有的,单步仿真看看,或者初始化再单步看看,到什么时候变的,还是其他原因引起的
陌路夕颜 回答时间:2020-11-25 13:53:48
建议直接上代码,不想上代码就打印变量的地址,或者在线调试
七哥 回答时间:2020-11-25 14:35:45
变量定义时指定地址要谨慎,不要占用系统栈空间。
edmundlee 回答时间:2020-11-25 15:16:54
还是贴代码吧。这应该是对齐的问题, 你可以试一下把7改为8, 问题就会解决了, 信不?
小小超 回答时间:2020-11-25 17:17:24
数组只定义不初始化的话,是不会占用内存的。
butterflyspring 回答时间:2020-11-30 10:46:23
编译有很多条件的,没有具体代码,编译器和版本,以及选项,大家很难判断和验证的。目前看起不应该发生这样的问题。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版