找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3869|回复: 4
收起左侧

关于单片机keil设置xdata后系统不能运行的故障,求解析

[复制链接]
ID:383840 发表于 2018-8-25 15:14 | 显示全部楼层 |阅读模式
单片机编程软件keil xdata设置如下图设置

图.png

编译程序后,下载到板子上,程序不能正常运行
但是我删掉部分变量后,再次编译,程序就正常了
查看map文件 定义的变量并未超出xdata空间
如图两种设置都不行 T2.png T3.png
求问,为什么能正常编译成功 但是程序却跑不起来呢
回复

使用道具 举报

ID:277550 发表于 2018-8-25 22:46 | 显示全部楼层

为何要修改配置资料,修改地址要修改得正确才行,在代码中使用就好了。
回复

使用道具 举报

ID:383840 发表于 2018-8-27 08:50 | 显示全部楼层
是这样的  我有两份代码  A份是变量少的 xdata空间是2816byte B份是变量多的 编译的时候提示xdata超出空间大小  所以我把A、B两份xdata空间调整成3072byte 最后A代码烧进去系统能正常工作 B代码烧进去不能正常工作 但是减少B代码中变量的数量 B代码也可以正常了 这是为什么呢 难道这个keil设置空间是没用的 仅仅是依靠实际代码情况来工作的?
回复

使用道具 举报

ID:387733 发表于 2018-8-27 12:15 | 显示全部楼层
art_jianda 发表于 2018-8-27 08:50
是这样的  我有两份代码  A份是变量少的 xdata空间是2816byte B份是变量多的 编译的时候提示xdata超出空间 ...

你的B代码xdata超出芯片空间了,你把空间调大只是编译通过了,实际芯片内部没有变化,A代码变量少,所以前后都能正常工作,而B代码超出空间,你调整编译器空间,使得编译正常通过,实际工作时,一部分超界的变量不能工作,当然不能正常了。keil设置空间只是告诉编译器我有那么大的空间,它并不知道你是否欺骗了它。
回复

使用道具 举报

ID:104984 发表于 2021-8-9 19:41 | 显示全部楼层
我把受影响的变量声明data就可以正常工作了,几个全局变量,256字节大数组在xdata没有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表