您的位置 首页 发布

ICC过错集锦,看懂ICC AVR的报错

新手用ICC编程的时候,经常会出现一些错误,现在将常见的错误报告整理如下。这里的一些错误是我为了展示而故意制造的,欢迎你提供你遇到的错误。排名不分先后:一、正常编译通过CODE:

  新手用ICC编程的时分,常常会呈现一些过错,现在将常见的过错陈述收拾如下。这儿的一些过错是我为了展现而成心制作的,欢迎你供给你遇到的过错。排名不分先后:

  一、正常编译经过

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\试验教程\LED使用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega

  Device 1% full.

  Done.

  [Copy to clipboard]

  这是咱们最想看到的了,万事大吉。

  二、工程中未参加.C文件

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega

  unknown file type @main.lk, passed to linker

  !ERROR unknown file type ‘@main.lk’

  C:\icc\bin\imakew.exe: Error code 1

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  处理办法:将你的程序参加工程中,能够右键程序区>>ADD to project

  三、程序没有后缀名,或许后缀名不正确。

  CODE:

  C:\icc\bin\imakew -f main.mak

  C:\icc\bin\imakew.exe: ‘main’ is up to date

  Done.

  [Copy to clipboard]

  这是一个很难了解的过错,它是由工程中的程序文件没有后缀名形成的。

  处理办法:将原有文件移出工程,将文件的后缀名改为.C,然后再参加工程中。

  四、没有main函数

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\试验教程\LED使用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega

  !ERROR file ‘crtatmega.o’: undefined symbol ‘_main’

  C:\icc\bin\imakew.exe: Error code 1

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  处理办法,编写程序主函数MAIN。

  五、没有挑选方针芯片呈现如下过错:

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -l -g -Wa-W D:\桌面\试验教程\LED使用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -Wl-W -bfunc_lit:0.0×2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk

  !E C:\icc\lib\crtAVR.o(41): Code address 0 already contains a value

  !E C:\icc\lib\crtAVR.o(41): Code address 0x1 already contains a value

  C:\icc\bin\imakew.exe: Error code 1

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  处理办法:project>>Options>>target>>device configuration 挑选适宜的芯片。

  六、短少分号

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\试验教程\LED使用\霓虹灯\main.c

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(52): unrecognized statement

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(53): syntax error; found `}’ expecting `;’

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(53): syntax error; found `end of input’ expecting `}’

  C:\icc\bin\imakew.exe: Error code 1

  C:\icc\bin\imakew.exe: ‘main.o’ removed.

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  上面的陈述说明晰第52行短少一个分号,预期分号的当地呈现了“}”。

  处理方法,在52行结尾增加分号。

  相似的有:短少}的报错

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\试验教程\LED使用\霓虹灯\main.c

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(55): illegal statement termination

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(55): skipping `void’

  !W D:\桌面\试验教程\LED使用\霓虹灯\main.c(55):[warning] calling function without prototype may cause errors

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(56): syntax error; found `{‘ expecting `;’

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(57): syntax error; found `end of input’ expecting `}’

  C:\icc\bin\imakew.exe: Error code 1

  C:\icc\bin\imakew.exe: ‘main.o’ removed.

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  七:变量没有界说

  CODE:

  C:\icc\bin\imakew -f main.mak

  iccavr -c –IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\试验教程\LED使用\霓虹灯\main.c

  !E D:\桌面\试验教程\LED使用\霓虹灯\main.c(48): undeclared identifier `i’

  C:\icc\bin\imakew.exe: Error code 1

  C:\icc\bin\imakew.exe: ‘main.o’ removed.

  Done: there are error(s). Exit code: 1

  [Copy to clipboard]

  处理办法:在程序开端前增加变量界说,比方unsigned char i;留意,界说变量要在函数的最前面进行,及在进行核算操作之前界说一切变量。

  欢迎你发布你遇到的过错和处理方法,或许你遇到的过错还没处理的。

  八、在编译时总是不能生成COF文件,不能进行调试

  处理办法:在ICCAVR编译环境中,进入Project -> Option -> Compiler中在Output format区选COFF/HEX格局

  九、请点拨一下:

  我的程序呈现下列过错提示,是不是我什么当地设置错了呀。

  CODE:

  D:\icc\bin\imakew -f tex.mak

  -lstudio -lfpavr

  want size 346

  lo 3910 hi 4096 size 187

  !E (37): area ‘text’ not large enough

  D:\icc\bin\imakew.exe: Error code 1

  Done: there are error(s). Exit code: 1

  一点过错那行的时分就出来一个提示框,但没有移到某一行上去。。。。

  ans1:还没有切当的解说,或许原因:应该是界说的数组过大,减小数组的数量应该能够了

  ans2:这是超越编译空间了,你能够到紧缩下代码,project>options>compiler,挑选Enable code compression或许只要优化代码了

  十:无意中又发现一个:

  too many arguments to `delay_1ms’

  问题原因,函数的参数太多,比方上面一个界说的是delay_1ms(void),我确用了delay_1ms(1);改为delay_1ms();就好了。

  十一、!ERROR can’t open file ‘\lib\iccavr\libsliccatmega-m.a’

  方才问了一下人,新建一个工程,然后把一切的C文件都导入里边,就没有的问题了,剩余一些语法过错。

  十二、ICC7 的代码巨细约束的问题,DEMO版超越4K不能编译。

  D:\PROGRA~1\iccv7avr\bin\imakew -f mytest.mak

  D:\PROGRA~1\iccv7avr\bin\imakew.exe: Couldn’t open mytest GetLastError() = 5

  Done: there are error(s). Exit code: 1

  (斑竹,我后来发现这如同是因为ICC编译生成的某些文件有过错,把ICC生成的文件都删掉,从头树立一个project,从头挑选Target,从头编译就好了)

  十三、

  CODE:

  iccavr -o main -LD:\avr\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x8c.0x10000 -dram_end:0x10ff -bdata:0x100.0x10ff -dhwstk_size:16 -beeprom:1.2048 -fihx_coff -S2 @main.lk D:\PROTEU~1.7\PROTEU~1.7\JOHU\mcu\all\CH375HFB.A -lcatmega

  Device 45% full.

  warning: COFF no struct tag ‘_CMD_PARAM’ found for symbol index 1362

  Done.

  一个正告,搞不太清楚,曾经starnewtech说过,如同是ram不行用了。

  十四、重复界说 ,请在包括的头文件里边用这种格局。

  #ifndef __config_H__

  #define __config_H__ 1

  //你的界说放这儿。

  #endif

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/285345.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部