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

为什么全局变量的地址被改成 0xffffffff?

[复制链接]
gaotekknd 提问时间:2014-8-25 12:13 /
 全局变量的地址 应该 始终 不变的。
可是 程序中一个全局变量的地址 在执行了 一个函数 后 就 变成 oxFFFFFFFF了。
而这个函数 并没有 使用这个全局变量。
这到底是什么原因??
我用的 编译器 是 IAR6.7
收藏 评论5 发布时间:2014-8-25 12:13

举报

5个回答
gaotekknd 回答时间:2014-8-25 14:44:25

RE:为什么全局变量的地址被改成 0xffffffff?

再补充一下,我还发现 这个错误 同代码量的多少 还有关系。我如果在程序的后半部分,在出错语句的后面,就是 出错语句还没执行到的地方 随便去掉几个函数。编译后重新运行,就是正常的。
霹雳之火 回答时间:2014-8-25 15:07:34

RE:为什么全局变量的地址被改成 0xffffffff?

全局变量的地址应该不变啊,很奇怪
楼主把代码贴上来
gaotekknd 回答时间:2014-8-25 15:59:37

RE:为什么全局变量的地址被改成 0xffffffff?

unsigned int TempAddress=(unsigned int)(&TheFindPPSInteval);
TheFindPPSInteval.HaveJustSetSynSignalFlag=2;
DOWNLOAD_INIT();        //下载本机初始信息
TempAddress=(unsigned int )(&(TheFindPPSInteval));
TheFindPPSInteval.HaveJustSetSynSignalFlag=0;
这就是部分代码。应该没啥问题。关键是 去掉程序的几乎是任意的小函数 ,代码就正确了
在DownLoad_init();函数前面 TempAddress得到的地址就是 正确=0x20011d88;
执行DownLoad_init();函数 后 TempAddress得到的地址就是=0xffffffff;.
下面的是反汇编的截图 
error.jpg
霹雳之火 回答时间:2014-8-25 19:23:56

RE:为什么全局变量的地址被改成 0xffffffff?

DOWNLOAD_INIT()里有类似mmu功能的语句吗?
gaotekknd 回答时间:2014-8-25 19:35:26

RE:为什么全局变量的地址被改成 0xffffffff?

没有,只有 向flash 写数据,还有memcpy,memset这些语句。到底什么情况下会修改全局变量的地址?因为是在stlink和jlink跟踪发现的。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版