5635|7

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

keil51中的致命warning [复制链接]

例1:WARNING L15: MULTIPLE CALL TO SEGMENT
            SEGMENT: ?PR?_WRTOROM?WORKTIME_02
            CALLER1: ?PR?TIM?WORKTIME_02
           CALLER2: ?C_C51STARTUP

   以上warning说明函数WRTOROM()被调用多次(multiple),而且不理睬该warning,往往无法在开发板上得到理想的实验结果。

  分析:我们想想平时短延时函数delay()在一个工程程序里头都调用多次,却不会有warning,那何时才会出现多次调用的warning呢?

         caller指出了调用者是谁,caller1指出worktime_02文件下的tim(其实这个是我写的中断程序的函数名)函数体中有调用,

        caller2指出main()函数中也有调用WRTOROM(),问题就在这里了,keil有规定,中断服务程序不可调用main()函数中调用过的

        子程序。

解决办法:为保持main函数的简单明了,一般采取的方法是主函数正常调用,而中断服务子程序可采用直接展开法,而不直接调用需要的那个函数。

 

例2.

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  DIS_HOUR_GEWE
    MODULE:  main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  DIS_HOUR_GEWE
    MODULE:  main.obj (MAIN)

 

分析:可见其中外部变量(external)DIS_HOUR_GEWE 在main文件(一般为main.c)中悬而未决。如此看来,C文件中或自定义的头文件中声明了extern变量,而这个变量在本文件外部并没发现有,很可能是变量名不一致,或者外部文件根本就没有这个变量,所以就会出现这两个致命性警告,而这两个warning是成对出现的。


解决方法:查看extern变量和外部文件中对应定义的变量,名字修改成一致即可。没有的话直接在需要用的c文件中添加定义即可,注意防止重定义。


   

此帖出自51单片机论坛

最新回复

  详情 回复 发表于 2010-10-22 13:25

赞赏

1

查看全部赞赏

点赞 关注
个人签名勇往直前,协作共进,开创未来。
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
另外大家用keil51开发时遇到什么致命性(不得不改)的warning的,可以发上来,大家讨论一下解决之道,也可和我们分享你的解决思路,共同进步啊,感谢万分!
此帖出自51单片机论坛
 
个人签名勇往直前,协作共进,开创未来。
 
 

回复

762

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这个好,以前不怎么在意,但是,的确很重要
此帖出自51单片机论坛
 
 
 

回复

275

帖子

0

TA的资源

纯净的硅(中级)

4
 

支持楼主~~

 

此帖出自51单片机论坛
 
个人签名做自己喜欢的设计就是一种幸福~~~
 
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

5
 
以前的学习没怎么看啊,现在看到楼主说出来还真是啊
此帖出自51单片机论坛
 
个人签名我爱电子!
 
 

回复

33

帖子

0

TA的资源

一粒金砂(初级)

6
 
顶死你!!!!!
此帖出自51单片机论坛
 
个人签名小草眼中的世界!
 
 

回复

33

帖子

0

TA的资源

一粒金砂(初级)

7
 
顶死你!!!!!
此帖出自51单片机论坛
 
个人签名小草眼中的世界!
 
 

回复

1万

帖子

16

TA的资源

版主

8
 

恩,上边两个问题我也常犯

此帖出自51单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表