标题: *** WARNING L30: MEMORY SPACE OVERLAP [打印本页]

作者: davidxuwg    时间: 2025-8-21 20:41
标题: *** WARNING L30: MEMORY SPACE OVERLAP
我刚用stc8H的库函数来开发,碰到一个问题,只要一使用定时器,就报
*** WARNING L30: MEMORY SPACE OVERLAP
    FROM:    C:00000BH   
    TO:      C:00000EH   


注释掉就不报,大家碰到过这种问题吗?怎么解决的







作者: coody_sz    时间: 2025-8-21 22:52
地址重叠,看看m51文件吧。
作者: davidxuwg    时间: 2025-8-22 07:33
coody_sz 发表于 2025-8-21 22:52
地址重叠,看看m51文件吧。

谢谢您的回复,能说详细一点吗,我初学者
作者: davidxuwg    时间: 2025-8-22 07:47
coody_sz 发表于 2025-8-21 22:52
地址重叠,看看m51文件吧。


我百度了一下,找到了map文件,确实是重叠了,请问怎么解决,谢谢

作者: 123156fsadf    时间: 2025-8-22 10:35
空间不够了吧
作者: davidxuwg    时间: 2025-8-22 14:26
123156fsadf 发表于 2025-8-22 10:35
空间不够了吧

应该不是,芯片有64K,hex文件只有37K

作者: lyxing    时间: 2025-8-22 17:10
看看整个程序有没有重复定义  interrupt 1,别外中断内代码尽量简洁,别执行太大的程序,可以设置状态标志位,把程序放主程序内,通过状态标志位来判断执行现与否,执行后清除标志。
作者: rundstedt    时间: 2025-8-26 11:35
代码空间够用,链接脚本有问题?
作者: zhuls    时间: 2025-8-26 15:27
这个代码架构有问题:
按你的图中TL0=0x40,TH0=0xA2 ,假设主频为12M,在1T时,约为2ms一中断,
再看你图中的中断ISR函数中都有什么:
除了有最基本的计数,
还有JDQ,有LED1、有LED2执行驱动的代码,
还有GET_ADC、OLED_Show、这样本该在中断外执行的函数
还有一大堆的if ( )、有的if ()还是一连串的&&..
你有没有大约算一下,进中断,完整走完再出来,需花费多少时间?
会不会直接干翻了这个2ms的中断?
这明显是把餐后甜点当主食了,能行吗?

如果你在main()中调用了GET_ADC、OLED_Show等函数,又在中断中调用了同样的函数,很容易出问题的。
你说你注释了中断代码就OK,也说明上述的理论是正确的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1