社区导航

 
查看: 132|回复: 2

[求助] 这两个警告信息如何解决?

[复制链接]

11

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-11-8 14:15:50 | 显示全部楼层 |阅读模式

我写了一个单片机控制时间的程序,用LCD5110来显示信息,相关显示的函数写在LCD510.C文件中,然后在MAIN.C文件中调用。在编译链接时出现下列警告,我反复检查都找不到原因,排除不了这两个警告,请各位帮助分析一下是什么原因产生的,该如何排除?谢谢!
*** WARNING L15:  MULTIPLE CALL TO SEGMENT

    SEGMENT:  ?PR? _LCD_WRITE_VAL? LCD5110
    CALLER1: ?C_C51STARTUP
    CALLER2: ?PR?INTERRUPTTIMER0?MAIN
*** WARNING L15: MULTIPLE CALL TO SEGMENT
    SEGMENT: ?PR?_LCD_WRITE_BYTE?LCD5110
    CALLER1: ?C_C51STARTUP
    CALLER2: ?PR?INTERRUPTTIMER0?MAIN

此帖出自51单片机论坛


回复

使用道具 举报

6892

TA的帖子

176

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2018-11-8 16:33:15 | 显示全部楼层
MULTIPLE CALL TO SEGMENT
该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。





出现这种警告的原因一般有两种:


第一:这个函数是不可重入函数,当该函数运行时可能被打断,打断后该函数又被再次运行,从而造成函数内部数据丢失;


第二:该函数的内部变量数据所占有的内存在link时被连接器认为是可覆盖的,因此在连接时进行了数据覆盖优化,但是连接器同时发现该函数在运行时被打断后,其他函数(如中断服务子程序)的运行造成了该函数的数据被覆盖。


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-11-18 16:33 , Processed in 0.079390 second(s), 16 queries , Gzip On, MemCache On.

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