总觉得KEIL编译时超过2K(破解版)后有问题,求高人指点

2020-02-05 08:46发布

各位高人:

   我在此论坛之前发了两个贴子!我本人感觉到用KEIL编译的时候,程序不能太长,超一定长度就出现问题,一直在STARTUP.A51里转悠!总跳不到MAIN()中来!不知道大家有否同感?求答案中...


注:   我是用新华龙的C8051F330比较多!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
and001
1楼-- · 2020-02-08 10:08
本帖最后由 and001 于 2012-7-2 20:52 编辑

你好!为了让你看得不清楚点我去掉了不需要的部分,但编译HEX文件后长度为2139  (我感觉到程序就在STARTUP.A51中转悠!!跑不到MAIN()中来)

program size :size data=83.0 xdata=64 code=2139
没有错误 但有15个无关紧要的警告

我是想写个蓝牙无线通信程序!

请高人帮忙分析,看看问题在哪里!谢谢
Jigsaw
2楼-- · 2020-02-08 14:53
 精彩回答 2  元偷偷看……
and001
3楼-- · 2020-02-08 20:12
是的!哈哈
哈哈

shark
4楼-- · 2020-02-08 20:16
and001 发表于 2012-7-2 20:51
你好!为了让你看得不清楚点我去掉了不需要的部分,但编译HEX文件后长度为2139  (我感觉到程序就在STARTUP. ...

编译不能过, 一大堆Warning, Keil的Warning是不能忽略的,
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  HEARTRATE
    MODULE:  nRF8001.obj (NRF8001)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  CONFIGER
    MODULE:  nRF8001.obj (NRF8001)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  FLG_CONNECTED
    MODULE:  nRF8001.obj (NRF8001)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  CONFIGER
    MODULE:  nRF8001.obj (NRF8001)
    ADDRESS: 07B2H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  FLG_CONNECTED
    MODULE:  nRF8001.obj (NRF8001)
    ADDRESS: 06C6H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  FLG_CONNECTED
    MODULE:  nRF8001.obj (NRF8001)
    ADDRESS: 06D4H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  HEARTRATE
    MODULE:  nRF8001.obj (NRF8001)
    ADDRESS: 0847H

这些符号都无法链接, 编译结果必定是错误的.
shark
5楼-- · 2020-02-08 20:49
因为你给的文件不全,为了编译通过(再说一遍,Keil C的Warning不能忽略, 这货连链接不上函数都不是ERROR,而是Waring), 修改nF8001.c 加了两个变量后没问题了. 见附件.
test_blue.rar (28.23 KB, 下载次数: 5) 2012-7-2 22:28 上传 点击文件名下载附件

and001
6楼-- · 2020-02-08 21:32
本帖最后由 and001 于 2012-7-3 09:24 编辑

谢谢高高人!考虑问题非常严谨! 真是厉害呀! 根本问题在二维数组那里!!
顺便问问 以下两个定义有什么区别(难怪我把二维数组缩短好象就没有问题了,总感觉文件长了不行)?
char  code        Configer[][32]={};
extern   const  char  Configer[][32]={};

一周热门 更多>