Keil中部分Error & Warning解决方法记录

本文主要记录在使用Keil软件的过程中所遇到Error & Waring的解决方法,文中记录的解决方法大部分来源于网络,并均验证其正确才记录的。

1. Error解决方法

1.1 *** ERROR L107: ADDRESS SPACE OVERFLOW

1.1.1 案例描述

中文翻译:***错误 L107: 地址控件溢出
Error截图:在这里插入图片描述
场景描述:编译C51源程序时,出现该错误。
产生原因:C51的内存模型采用了"Small: varialbles in DATA",但此次工程定义了太多变量,导致内存不够用。

1.1.2 解决方法

a. 在"Options for Target…“中的"Target"选项卡中,将"Memory Model’的"Small: variables in DATA"改为”Compact: variables in PDATA” 或“Large: variales in XDATA"
在这里插入图片描述
b. 对C51源程序重新编译即可解决Error。

1.1.2 总结

small、compact和large是C51的3中内存模型。在small的模式中,所有所有默认变量均装入单片机内部的RAM中,内部RAM的低128B。在compacr模式中,所有默认变量均位于单片机的片外低256B RAM中。在large模式中,所有默认变量优先放在外部64KB的RAM中。其中,small访问速度快、缺点是空间有限,且对堆栈的分配比较少,难以把握,碰到递归调用时候需要小心。这种模式只适用于小程序。compact模式较small模式存储单元宽裕,但速度较small慢,但是比large块,是一种中间状态。large模式的优点是空间大,可存变量多;缺点是:访问速度慢,尤其对于两个以上字节变量访问速度来说更是如此。
所参考的文章:
a. https://blog.csdn.net/weixin_43942316/article/details/112290991
b. https://blog.csdn.net/weixin_34696006/article/details/112753773

2. Waring解决方法

2.1 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

2.1.1 案例描述

中文翻译:***警告 L16: 未调用的段,忽略覆盖过程
Waring截图:
在这里插入图片描述
场景描述:编译C51源程序时,出现该错误。
产生原因: 工程中有定义了某个函数,但在程序运行的过程中并没有调用它。

2.1.2 解决方法

找到没有使用的函数,注释掉或者在程序运行的过程中调用它。也可以忽略该警告。

2.1.3 总结

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值