新手用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