当前位置:首页 > 单片机 > 单片机
[导读]1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作

1. Warning 280:’i’:unreferenced local variable
说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告

2 Warning 206:’Music3’:missing function-prototype
说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用
解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告

3 Compling :C:8051MANN.C
Error:318:can’t open file ‘beep.h’
说明在编译C:8051MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:8051 的工作目录中

4 Compling:C:8051LED.C
Error 237:’LedOn’:function already has a body
说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的

5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAYX1MS?DELAY
说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译

6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO: 0025H
说明外部资料ROM 的0025H 重复定义地址
解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它

7 WARNING 206:’DelayX1ms’: missing function-prototype
C:8051INPUT.C
Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:8051INPUT.C
说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告
解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用

8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
ADDRESS:0018H
说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接
解决方法设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去

9 ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:8051OSDM.OBJ (OSDM)
ADDRESS: 4036H
说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象
解决方法将以data 型别定义的公共变量修改为idata 型别的定义

10.***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1
CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
CALLER2: ?C_C51STARTUP
***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_SPI_SEND_WORD?D_SPI
CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
CALLER2: ?C_C51STARTUP
***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI
CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
CALLER2: ?C_C51STARTUP
该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR 打断,一段时间后又可以运行,但是相应数据不会丢失)。
原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。
例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。
解决方法:
如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析
(overlay analysis)中除去,例如:
OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)
上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数,而这些被调用在程序中其他地方也被调用,你可能会需要也将这些函数排除在覆盖分析(overlay analysis)之外。这种OVERLAY 指令能使编译器除去上述警告信息。
如果函数可以在其执行时被调用,则情况会变得更复杂一些。这时可以采用以下几种方
法:
1.主程序调用该函数时禁止中断,可以在该函数被调用时用#pragma disable 语句来实现禁
止中断的目的。必须使用OVERLAY 指令将该函数
从覆盖分析中除去。
2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。
3.将该函数设为重入型。例如:
void myfunc(void) reentrant {
...
}
这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种
方法时重入堆栈必须在STARTUP.A51 文件中配置。
这种方法消耗更多的RAM 并会降低重入函数的执行速度。

11. ***WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_COMPARE?TESTLCD
说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有调用它的语句。
这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就可以。不理它也没什么大不了的。
解决方法:去掉COMPARE()函数或利用条件编译#if …..#endif,可保留该函数并不编译。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

之后新建新的工程,添加.a文件就可以使用了,当然也可以使用keil来添加,但是keil默认的是用.lab,需要自己配置一下文件属性,改为lib文件即可。一半release sdk的时候用这种方式很关键的,毕竟自己的核心代...

关键字: keil 文件属性 lib文件

摘要:真空系统是冻干机的重要组成部分之一,冻干过程中,制品中的水分只有在一定的真空状态下才能进行升华,达到干燥的目的。真空系统的运行效果将直接影响冻干制剂产品的质量和生产周期。鉴于此,对冻干机真空系统常见故障的原因与解决...

关键字: 常见故障 原因分析 解决方法

摘要:分析了影响铅碳储能电站收益的多种因素,并提出了解决方法,达到了大幅提高铅碳储能电站收益的目的。

关键字: 铅碳储能电站 影响因素 解决方法

摘要:针对某水电站机组下导油槽存在的甩油及油雾外溢现象,技术人员对机组运行过程中存在的技术问题进行了分析,并提出了解决方法。

关键字: 下导油槽密封盖 原因分析 解决方法

摘要:小岩头水电站装机容量3×43.33MW,采用混流式机组,投产后发现3台调速器存在不同程度的非周期性抽动问题,影响了机组的稳定运行,经反复检测、试验后找到了导致出现该问题的原因,通过增加调速器机械柜柜体接地线后,调速...

关键字: 水轮发电机组 调速器抽动 解决方法

摘要:分析了影响铅碳储能电站收益的多种因素,并提出了解决方法,达到了大幅提高铅碳储能电站收益的目的。

关键字: 收益 影响因素 解决方法

摘要:针对某水电站机组下导油槽存在的甩油及油雾外溢现象,技术人员对机组运行过程中存在的技术问题进行了分析,并提出了解决方法。

关键字: 油雾外溢 原因分析 解决方法

摘要:小岩头水电站装机容量3×43.33Mw,采用混流式机组,投产后发现3台调速器存在不同程度的非周期性抽动问题,影响了机组的稳定运行,经反复检测、试验后找到了导致出现该问题的原因,通过增加调速器机械柜柜体接地线后,调速...

关键字: 水轮发电机组 调速器抽动 解决方法

DSP28335与AD7606通过SPI的串行数据交互

关键字: keil C
关闭
关闭