共2条
1/1 1 跳转至页
各位大虾给看看我的一个工程编译后的警告,看看有何对策.

问
下面是我的一个不小不大的工程编译后keil提出的警告,其中警告1~5我怎么看都不可能会递归调用.但他就偏偏给出警告.
另外,请大虾指点一下,为什么警告9~15会出现 STARTUP 也调用的情况,印象中STARTUP 只是上电是初始化用的,为何会出现
STARTUP 和其他程序同时调用另一程序的情况呢.
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
Build target 'Target 1'
assembling STARTUP.A51...
compiling menu .c...
compiling Software Driver for 29le101.c...
compiling driver for ssd1815bb.c...
compiling DS1302.C...
compiling keysCAN.C...
linking...
警告1
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?_DISPLAY_WEEK?DS1302
警告2
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_1?MENU__
警告3
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?_DISPLAY_MENU?MENU__
警告4
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_2?MENU__
警告5
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_3?MENU__
警告6
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?ENABLE_CHIP_DATA_PROTECTION?SOFTWARE_DRIVER_FOR_29LE101
警告7
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_FLASH_LOAD_DATA?SOFTWARE_DRIVER_FOR_29LE101
警告8
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?LCM_ROLLSCREEN?DRIVER_FOR_SSD1815BB
警告9
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_TIME?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告10
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_READ_TIME_1302?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告11
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_SUPER_BIG_CHAR?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告12
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_LCM_DISPLAY_STRING?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告13
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_ASCII_CHAR?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告14
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_WEEK?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告15
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_YEAR_DATE?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
Program Size: data=112.1 xdata=29 code=6380
creating hex file from "encoder"...
"encoder" - 0 Error(s), 15 Warning(s).
答 1: 通常都是常数段调用问题。把你的那些常数指针之类的东西拿到另一份单独的文件中就没有了。
另外,请大虾指点一下,为什么警告9~15会出现 STARTUP 也调用的情况,印象中STARTUP 只是上电是初始化用的,为何会出现
STARTUP 和其他程序同时调用另一程序的情况呢.
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
Build target 'Target 1'
assembling STARTUP.A51...
compiling menu .c...
compiling Software Driver for 29le101.c...
compiling driver for ssd1815bb.c...
compiling DS1302.C...
compiling keysCAN.C...
linking...
警告1
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?_DISPLAY_WEEK?DS1302
警告2
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_1?MENU__
警告3
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?_DISPLAY_MENU?MENU__
警告4
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_2?MENU__
警告5
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?MENU__
CALLER: ?PR?FUNC_ROOT_D_3?MENU__
警告6
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?ENABLE_CHIP_DATA_PROTECTION?SOFTWARE_DRIVER_FOR_29LE101
警告7
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_FLASH_LOAD_DATA?SOFTWARE_DRIVER_FOR_29LE101
警告8
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?LCM_ROLLSCREEN?DRIVER_FOR_SSD1815BB
警告9
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_TIME?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告10
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_READ_TIME_1302?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告11
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_SUPER_BIG_CHAR?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告12
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_LCM_DISPLAY_STRING?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告13
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_ASCII_CHAR?DRIVER_FOR_SSD1815BB
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告14
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_WEEK?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
警告15
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_DISPLAY_YEAR_DATE?DS1302
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER2_INT1_SERV?MENU__
Program Size: data=112.1 xdata=29 code=6380
creating hex file from "encoder"...
"encoder" - 0 Error(s), 15 Warning(s).
答 1: 通常都是常数段调用问题。把你的那些常数指针之类的东西拿到另一份单独的文件中就没有了。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |