共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 跳转至页
回复
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |