keil4 常见问题处理办法
uvision4致命错误1250超过限制版本代码大小限制

uvision4致命错误1250超过限制版本代码大小限制
超过限制版本代码大小限制是指keil制作uvision4仿真程序时,若超出了限制的程序代码大小,将会出现"致命错误1250"。
"致命错误1250"指程序代码大小越界异常。
这是由于计算机中使用的RAM容量有限,资源有限,因此事先约定该程序的最大代码大小,以保证系统稳定运行。
可以通过修改keil设置或程序代码实现调整,降低变动中遇到的"致命错误1250"的几率。
首先,可以重新编写和优化程序代码,减少重复的代码,可以采用面向对象编程方法或以其他更高效去改写原本的代码。
如果只是在程序运行状态下完成代码大小优化,可以尝试使用代码重构技术,使用重构工具可以调用相关的程序库来优化程序,进而获得更小的代码体积。
其次,可以尝试修改keil设置,以使程序能够在限定的内存空间内运行,比如在keil IDE中进行代码体积优化,减少程序所使用的中断向量表的数量,减少变量的数量等。
最后,也可以更换更大的RAM,消除程序代码大小限制。
一般情况下,如果更换RAM,也有可能会遇到不兼容的问题,因此使用时要小心。
总体来说,uvision4致命错误1250超过限制版本代码大小限制是比较常见的异常现象,可以通过优化程序代码、重新调整keil 设置或更换更大的RAM来解决该问题。
keil4 常见编译错误解决

Keil C编译器常见警告与错误信息解决方法1.Warning280:’i’:unreferenced local variable说明局部变量i在函数中未作任何的存取操作解决方法消除函数中i变量的宣告2Warning206:’Music3’:missing function-prototype说明Music3()函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告3Compling:C:\8051\MANN.CError:318:can’t open file‘beep.h’说明在编译C:\8051\MANN.C程序过程中由于main.c用了指令#i nclude“beep.h”,但却找不到所致解决方法编写一个beep.h的包含档并存入到c:\8051的工作目录中4Compling:C:\8051\LED.CError237:’LedOn’:function already has a body说明LedOn()函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的5***WARNING16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS SEGMENT:?PR?_DELAYX1MS?DELAY说明DelayX1ms()函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms()函数或利用条件编译#if…..#endif,可保留该函数并不编译6***WARNING6:XDATA SPACE MEMORY OVERLAPFROM:0025HTO:0025H说明外部资料ROM的0025H重复定义地址解决方法外部资料ROM的定义如下Pdata unsigned char XFR_ADC_at_0x25其中XFR_ADC变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25处并修正它7WARNING206:’DelayX1ms’:missing function-prototypeC:\8051\INPUT.CError267:’DelayX1ms‘:requires ANSI-style prototype C:\8051\INPUT.C说明程序中有调用DelayX1ms函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms的内容编写完后也要作宣告或作外部宣告可在delay.h的包含档宣告成外部以便其它函数调用8***WARNING1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)***WARNING2:REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)ADDRESS:0018H说明程序中有调用MUSIC函数但未将该函数的含扩档C加入到工程档Prj作编译和连接解决方法设MUSIC3函数在MUSIC C里将MUSIC C添加到工程文件中去9***ERROR107:ADDESS SPACE OVERFLOWSPACE:DATASEGMENT:_DATA_GOUP_LENGTH:0018H***ERROR118:REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL:VOLUMEMODULE:C:\8051\OSDM.OBJ(OSDM)ADDRESS:4036H说明data存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL则局部变量先使用工作寄存器R2~R7作暂存当存储器不够用时则会以data型别的空间作暂存的个数超过0x7f时就会出现地址不够的现象解决方法将以data型别定义的公共变量修改为idata型别的定义说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享10定义了全局变量而没有外部External声明:reference made to erroneous external Ram空间不足:public refers to ignore segment外部变量:定义处不用加External,声明处要加External将以data型别定义的公共变量修改为idata型别的定义11***ERROR L118:REFERENCE MADE TO ERRONEOUS EXTERNAL定义了某某函数或全部变量在不同文件里面想调用它,却在包含头文件里面少了extern 语句,或只有主程序和包含头文件没有(EXTERN......定义语句(函数)).如果调试时有些if结构里的语句符合条件没有执行,或者某些语句不符合条件也被执行,那是因为if和else里有相同的语句,编译的时候作优化处理了。
keil4 常见问题处理办法

keil 4 中的一些常见问题处理办法keil 软件对于一个单片机编程者来说已经再熟悉不过了,我们都用得很多,但往往我们应用时总会遇到这样那样的问题,但又苦于无法解决,最终只能凑合着用。
下面我就个人经验对部分问题的解决方法给大家分享一下,也为初学者打点keil的应用基础。
不管他是哪个版本的,其处理办法基本都差不多,甚至可以说是完全一样的,下面我们就谈点实际的问题。
1、keil 4 中注释时,为什么不能打进汉字,都是方框?其处理方法:Edit -> Configuration,点击Colors & Fonts选项卡,在Window列表中选择Editor C Files,在右侧选择字体Courier,Use color in Comments 不能打钩.在做完上面的操作后,我来进行一下前后比较:显示效果如下:1、操作前:如果后面注释的黑线是方框,操作一样,但要适当改变字体(eg:宋体、新宋体都行)。
2、操作后显示效果:通过显示我们可以很直观的看到,注释中的文字已经清楚的显示了出来。
2、改变关键字颜色:方法:Edit -> Configuration->Colors & Fonts->Editor C Files->keyword->选择foreground为任意你想要的颜色(蓝色)。
显示效果如下:通过这一系列操作后,你可以将不同类型的数据改成你想要的颜色,方便你的编程和查错。
3、当前操作行底纹颜色和选中文字颜色设置:(1)当前工作行底纹和选中其文字设置:显示效果:(2)当前选中文字颜色和底纹显示:显示效果:通过该项操作后,你可以快速的找到你所编辑的区域,行数,甚至行段。
4、程序中空格显示为一点,如下图:解决办法:修改后显示效果:该项操作可以让页面更漂亮,更能满足我们的视觉习惯,提高变成效率。
5、没有程序行数框架显示,如下图:操作方法:操作后显示结果:其它操作方式基本类似,均可进行相应操作,达到自己想要的结果。
「keilc语言编程常见错误分析」

1.Warning 280:’i’:unreferencedlocal variable 说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告及即定义的参数在程序中并未调用2Warning 206:’Music3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern voidMusic3(void),即作外部宣告3Error:318:can’t open file‘beep.h’说明在编译C:\8051\MANN.C程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h的包含档并存入到c:\8051 的工作目录中ﻫ4 Error237:’LedOn’:function already has a body ﻫ说明LedOn()函数名称重复定义即有两个以上一样的函数名称ﻫ解决方法修正其中的一个函数名称使得函数名称都是独立的ﻫﻫ5 ***WARNING16:UNCALLED SEGMENT,IGNORED FOR OVERLAYPROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms()函数或利用条件编译#if …..#endif,可保留该函数并不编译ﻫ6***WARNING6 :XDATASPACE MEMORY OVERLAPFROM : 0025HTO: 0025H ﻫ说明外部资料ROM的0025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned char XF R_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它ﻫ7 WARNING206:’DelayX1ms’:missingfunction-prototypeﻫC:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-styleprototypeC:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms的内容编写完后也要作宣告或作外部8宣告可在delay.h 的包含档宣告成外部以便其它函数调用ﻫﻫ***WARNING1:UNRESOLVED EXTERNAL SYMBOLﻫSYMBOL:MUSIC3解决办法:1.是文件没有添加到工程里。
Keil编译与下载设置及常见问题解决方案

Keil编译与下载设置及常见问题解决方案这几天在群里朋友的帮助下学习了keil的编译与下载,现在将遇到的几个问题记录下来。
形成一个完整的教程。
为了帮助和我一样刚刚接触Keil的朋友,本文将分为两部分。
一,keil编译与下载设置。
二,常见问题原因分析与解决方案。
一,keil编译与下载设置首先看根据不同的MCU我们需要设置的项目有device,c/c++。
根据不同的下载器需要设置的项目有debug,utilities。
1.device的设置在device选项中search自己所要的芯片。
根据MCU的类型选择,其实就是修改HD或者是MD.3.DEBUG设置4.utilities设置二,常见问题原因分析与解决方案到此我将我遇到的问题一一展示给大家,一来自己复习巩固二来帮助小白更快的解决问题。
1)在device中没有我要的芯片?解决办法,到网上下载pack包加载到keil。
如图所示,在file中选择import...2)Error:Flash Download failed-”cortex-M3原因分析:flash download 设置错误解决办法:参考第一部分第3步骤3)No ULINK2/ME Decice found原因分析:Utilities设置错误解决方案:参见第一部分第4步骤4)编译过程中出现#67:expected a “}”原因分析:我是在跟换不同型号芯片时遇到的这个问题。
这两个芯片一个是大型,一个是中型,因此出现这样的问题。
解决方案:替换.S文件,修改C/C++宏定义方法:第一步:在.S文件中右键今入manage project items,add与芯片对应的.S的文件。
第二步:修改C/C++宏定义方案:参加第一部分第二步骤。
具体的就是修改一个字母H,M等。
评,根据实测这一步非常重要,其实.s文件不修改进修改c/c++宏定义就可以了。
具体原因我也不懂。
感谢再次特别感谢麒麟座开发板交流群的朋友,感谢晨风~依然、OneNET-嵌入式软件-周家绪悉心指导了我遇到的问题,他们都是群里真正的老司机。
Keil中的常见错误和警告

Keil中的常见错误和警告C51编译器识别错类型有三种1、致命错误:伪指令控制行有错、命令行指定的无效选项、访问不存在的原文件或头文件等。
致命错误立即终止程序编译。
2、语法及语义错误:语法和语义错误都发生在源文件中。
有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。
3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题,程序员应斟酌处理。
错误信息及可能发生的原因列表*ERROR 100:unprintable character 0x??skipped源文件中发现非法字符(注意,注解内的字符不做检查)。
*ERROR 101:unclosed string字符串未用引号结尾。
*ERROR 102:string too long字符串不得超过511 个字符。
为了定义更长的串,用户必须使用续行符‘\’逻辑的继续该字符串,在词汇分析时遇到以该符号结尾的行会与下行连接起来.*ERROR 103: invalid character constant试图再声明一个已定义的宏,已存在的宏可以用#undef指令删除。
预定义的宏不能删除。
*ERROR 104: identifier expected预处理器指令期望产生一个标示符,如ifdef。
*ERROR 105: unclosed comment当注解无结束界定符(*/)时产生此错误。
*EROOR 106: unbalanced#if-endif controlsendif的数量与if或ifdef的数量不匹配。
*ERROR 107:include file nesting exceeds 9include指令后的文件名无效或丢失*ERROR 108:expected string,如#error “string”预处理器指令期望一个串变量。
*ERROR 109:由#error 伪指令引入的错误信息以错误信号形式显示。
*ERROR 110:missing directive预处理行#后缺少伪指令。
keil-错误

Keil - 错误Keil是一种嵌入式编程软件工具,使用Keil可以为各种微处理器、单片机和其他嵌入式系统编写程序。
Keil是由德国的Keil Elektronik GmbH开发的。
使用Keil 进行编程,是嵌入式系统开发和设计中必不可少的一部分。
但是,由于编程时可能会出现各种错误。
这篇文章主要讨论在Keil编程中可能会遇到的一些错误,以及如何解决这些错误。
错误1:无法打开源文件在一个Keil项目中,需要引用许多源文件。
如果某个源文件无法被Keil所找到,就会出现这个错误。
通常情况下,出现这个错误的原因可能是:•路径错误:源文件路径与Keil项目设置的路径不一致。
•源文件名称错误:源文件名称拼写错误或者大小写不一致。
•编译器版本问题:源文件与编译器版本不兼容。
解决这个问题的方法是,确认源文件的路径、名称和版本是否正确。
如果以上都没有问题,可以尝试重新导入该源文件并重新配置路径来修复该错误。
错误2:定义错误在Keil编程中经常使用定义宏。
这种宏是在程序中声明的,用于定义变量和表示常数。
如果定义错误,编译器就会报错。
通常情况下,出现这个错误的原因可能是:•宏定义语法错误:定义宏时如语法错误则会引发这个错误。
•宏常量类型错误:定义宏时常量类型错误会导致编译错误。
•宏名称重复:定义两个相同名称的宏定义引发这个错误。
解决这个问题的方法是,确认定义宏的语法是否正确。
确认宏类型是否正确,如果该宏名称重复了,在程序中更改为不同的名称即可。
错误3:语法错误语法错误通常是由书写错误引起的。
Keil编译器在程序中检测到错误语法时,会抛出一个编译错误。
通常情况下,出现这个错误的原因可能是:•拼写错误:源代码中有单词拼写错误。
•语法错误:在编写代码时,例如函数、变量或指针中存在语法错误。
•缺少括号:程序员可能忘记使用括号,即忘记使用括号表示优先级。
解决这个问题的方法是,仔细检查程序代码中存在的错误和拼写错误。
错误4:链接错误链接错误在编译器完成编译后出现,它意味着编译器无法将所有的目标文件链接在一起来生成可执行文件。
KeiluVision4代码编辑器中文字符乱码问题

KeiluVision4代码编辑器中⽂字符乱码问题
MDK-ARM 使⽤中⼀直有个很纠结的问题,中⽂字符⽀持不好。
⽐如写代码注释,使⽤中⽂删除字符就会只删除⼀半问题。
复制粘贴代码中间有中⽂就会出现乱码问题。
想过换IAR,新学个IDE也⿇烦,上⾯的问题也不很⼤稍微绕⼀下也能解决,所以⼀直没换。
发现其实这个根本不是问题,安装好后默认是ANSI编码,所以会出现上述问题。
只要把编码改成UTF-8编码就能解决上述烦恼。
设置步骤:
1、选择菜单:[Edit]->[Configuration]
2、页签[Editor]中 General Editor Settings 的Encoding 改为 Encode in UTF-8 without signature
注:建议修改为UTF-8 通⽤性⽐较好,不管在那⾥打开代码都不会出现问题。
版本:
Keil uVision4 V4.72.0.0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
keil 4 中的一些常见问题处理办法
keil 软件对于一个单片机编程者来说已经再熟悉不过了,我们都用得很多,但往往我们应用时总会遇到这样那样的问题,但又苦于无法解决,最终只能凑合着用。
下面我就个人经验对部分问题的解决方法给大家分享一下,也为初学者打点keil的应用基础。
不管他是哪个版本的,其处理办法基本都差不多,甚至可以说是完全一样的,下面我们就谈点实际的问题。
1、keil 4 中注释时,为什么不能打进汉字,都是方框?
其处理方法:Edit -> Configuration,点击Colors & Fonts选项卡,在Window列表中选择Editor C Files,在右侧选择字体Courier,Use color in Comments 不能打钩.
在做完上面的操作后,我来进行一下前后比较:
显示效果如下:
1、操作前:
如果后面注释的黑线是方框,操作一样,但要适当改变字体(eg:宋体、新宋体都行)。
2、操作后显示效果:
通过显示我们可以很直观的看到,注释中的文字已经清楚的显示了出来。
2、改变关键字颜色:
方法:Edit -> Configuration->Colors & Fonts->Editor C Files->keyword->选择foreground为任意你想要的颜色(蓝色)。
显示效果如下:
通过这一系列操作后,你可以将不同类型的数据改成你想要的颜色,方便你的编程和查错。
3、当前操作行底纹颜色和选中文字颜色设置:(1)当前工作行底纹和选中其文字设置:
显示效果:
(2)当前选中文字颜色和底纹显示:
显示效果:
通过该项操作后,你可以快速的找到你所编辑的区域,行数,甚至行段。
4、程序中空格显示为一点,如下图:
解决办法:
修改后显示效果:
该项操作可以让页面更漂亮,更能满足我们的视觉习惯,提高变成效率。
5、没有程序行数框架显示,如下图:
操作方法:
操作后显示结果:
其它操作方式基本类似,均可进行相应操作,达到自己想要的结果。
以上均是个人操作经验,均已被验证可行后才分享给大家的,也愿大家相互补充,使其所有操作更加完整,使更多得人学好keil,更希望你们的分享。
ZJK 2013.01.08
QQ:459576729。