首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

codewarrior使用请教!!!

局部变量并不分配固定的RAM的地址,而是放在堆栈中操作。你的堆栈大小是多少?
海纳百川  有容乃大
看看你的PRM文件?
海纳百川  有容乃大
能否将整个project打包发过来看看?
海纳百川  有容乃大
可以发到这里:strongchen_free@yahoo.com.cn。
海纳百川  有容乃大
最好将整个project打包发过来。不然只看部分程序,很难发现问题到底在哪。
海纳百川  有容乃大
我已经看过你的程序了。编译并没有通过,原因是地址重叠。

因为堆栈大小是0x30,放在非零页,地址为0x110~0x13F;你再定义一个大小为17的数组,放在Default RAM,则地址为0x100~0x110,刚好二者在地址0x110处重叠。

如果你一定要一个17字节的数组,有2个办法:

1. 将堆栈减小;
2. 将数组放在零页RAM中。
海纳百川  有容乃大
数组是放在零页还是非零页应该是没有任何区别的,只是地址不同而已。

或者将你的调试过程截个图发给我看看?
海纳百川  有容乃大
我用CodeWarrior的软件仿真测试了一下你的程序,并没有看到你的截图中显示的现象。请参看我发给你的截图。

第一张图是运行第一个for循环的情况。你可以在Data:1窗口中看到test_data的地址为40,而且可以在memory窗口中看到对它的赋值都是正确的。

第二张图是运行第二个for循环的情况。你可以在Data:2窗口中看到test_data的地址为11F,而且可以在memory窗口中看到对它的赋值也是正确的。

我不太清楚你的问题是如何出现的。你用的是3.1版的CodeWarrior吗?可以试试重新安装一遍。
海纳百川  有容乃大
返回列表