欢迎来到天天文库
浏览记录
ID:34259566
大小:135.00 KB
页数:6页
时间:2019-03-04
《keiluvision3错误分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、KeilUvision3错误分析2010-11-1313:55 首先我们看一下,Keil最常见的几种错误,这几个错误多是网上朋友经常去讨论的错误,也可以在各大论坛看到。这里载录最常见的5种作为例子,方便分析。1、WARNING6:XDATASPACEMEMORYOVERLAPFROM:0025HTO:0025H说明外部资料ROM的0025H重复定义地址解决方法外部资料ROM的定义如下PdataunsignedcharXFR_ADC_at_0x25其中XFR_ADC变量的名称0x25,请检查
2、是否有其它的变量名称也是定义在0x25处并修正它。2、WARNING206:’Delay1ms’:missingfunctionprototypeC:8051INPUT.CError267:’DelayX1ms‘:requiresANSIstyleprototypeC:8051INPUT.C说明程序中有调用Delay1ms函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法:编写Delay1ms的内容编写完后也要作宣告或作外部宣告可在delay.h的包含档宣告成外部以便其它函数调
3、用。3、WARNING1:UNRESOLVEDEXTERNALSYMBOLSYMBOL:MUSIC3MODULE:C:8051MUSIC.OBJ(MUSIC)***WARNING2:REFERENCEMADETOUNRESOLVEDEXTERNALSYMBOL:MUSIC3MODULE:C:8051MUSIC.OBJ(MUSIC)ADDRESS:0018H说明程序中有调用MUSIC函数但未将该函数的含扩档C加入到工程档Prj作编译和连接解决方法:设MUSIC3函数在MUSICC里将MUSIC
4、C添加到工程文件中去。4、ERROR107:ADDESSSPACEOVERFLOWSPACE:DATASEGMENT:_DATA_GOUP_LENGTH:0018H***ERROR118:REFERENCEMADETOERRONEOUSEXTERNALSYMBOL:VOLUMEMODULE:C:8051OSDM.OBJ(OSDM)ADDRESS:4036H说明data存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL则局部变量先使用工作寄存器R2~R7作
5、暂存当存储器不够用时则会以data型别的空间作暂存的个数超过0x7f时就会出现地址不够的现象解决方法:将以data型别定义的公共变量修改为idata型别的定义。5、ERRORL104:MULTIPLEPUBLICDEFINITIONS是104号错误,你头文件里的变量定义被多次调用,相当于多次定义了。(注意头文件里与主函数间容易同时调用相同的变。分析如下:1、从字面上的意思来看,这个警告信息说的是xdata空间的内存被覆盖了。C51对于片外变量,可以使用xdata关键字来标识,对于这些变量的操作,当然
6、要比片内变量要慢一点,但是胜在空间比内部变量的空间要大得多,所以在大多数情况下都是使用xdata变量空间的.那么xdata空间的内存被覆盖到底是什么意思呢,原来是C51在定义xdata区域变量的时候,可以使用关键字"_at_"来直接定义某个变量的地址,这一般是用来定义硬件地址的。这样看来,这个警告信息的意思就比较明确了,就是编译器发现两个被指定了地址的变量使用了同一个地址空间。譬如我的错误就是定义了一个变量,其地址在0x8000,这是一个数组,长度为16,然后又定义了一个变量,其地址在0x800A,
7、这下明白了吧,第一个变量的起始地址是0x8000,长度16,结束地址就是0x800F,正好包括了0x800A这个地址,所以导致上述的警告信息。2、没有进行函数声明:调用没有声明的外部函数、使用位于没有声明的在调用函数候补的被调用函数。3、解决办法:a、是文件没有添加到工程里。b、可能是因为存在没有被调用的已经定义的函数。c、不知道你有没有把Sourcegroup组下面的A51.C删掉,如果没有删,在A51.c上点右键,选择removefile"".d、建一个新的c文件,里面写一个空的函数,把该文件添
8、加到project中,注意该文件不能再选generateassemblerSRCfile和assembleSRCfile选项。重新编译工程,如果警告该函数没被调用,在主文件中调一下。e、建一个新的c文件,把主文件中的几个函数移至该文件,把该文件添加到project中,注意该文件不能再选generateassemblerSRCfile和assembleSRCfile选项。重新编译工程。其他:UNRESOLVEDEXTERNALSYMBOL说明连接的时候没有找到外部变量e
此文档下载收益归作者所有