使用无线龙的串口互发,发现上述错误,原因是版本太高,具体原因不清,下载一下7.20H就可以了
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package 是4K限制版,请使用有非限制版的。
IAR常见错误请先从如下几方面入手: 1序列号是否正确。
2使用版本是否正确,应该使用7.30B打开的工程文件不能使用7.20H打开。 3尽量不要使用中文路径。
4ZigBee协议栈文件夹需要放在IAR安装盘根目录下。 5请确定当前编译文件夹是否具有读写权限。 6使用的版本是否是限制版
Fatal Error[Pe005]: could not open source file \这是什么原因?谢谢了
是因为头文件路径不对造成,改正的方法是在设置选项卡的C/C++ Compiler -> Preprocessor选项里,将$TOOLKIT_DIR$\\INC\\CLIB\\添到Include paths中。($TOOLKIT_DIR$指IAR的安装路径,一般用到标准库函数时要将它写入Include paths里面)
Fatal Error[Pe005]: could not open source file \例子程序\\无线通信综合测试\\Library\\cc2430\\HAL\\source\\setTimer34Period.c 7
先检查 C:\\Users\%user\\Desktop\\例子程序\\无线通信综合测试\\Library\\cc2430\\HAL\\source\\有无setTimer34Period.c 这个文件,若有,则是因为IAR对中文路径支持不好的缘故,你把这个工程复制到全英文路径下编译应该就不会报错了。 Fatal Error[Pe1696]: cannot open source file \注意config.h 存放的位置,最好与main同处于一个文件夹 15Q:
Fatal Error[Cp001]:
Copy protection check, No valid license found for this product [24] XP下装的IAR,到了Win7下出来的问题。
A:这个问题是使用注册机带来的,系统换了,本机ID也要改了。
、、单击IARID.EXE得到本机的ID号
、、右键点Key.cmd,选择编辑,打开,将ID修改为本机ID
、、运行KEY.cmd,在key.txt中的含有EW8051-EV的序列号就是7.30的序列号 16Q:
在用iar debug 下载进已有程序板子出现的 A:将核心板与扩展板分开,只烧写核心板。 17Q:
A:自小峰关于协议栈XDATA溢出的小结 (1)减小程序;
(2)把配置文件f8w2430.xcl/f8w2430pm.xcl中的-D_CODE_END改大点: ******************** f8w2430.xcl:
// CODE //
// These settings determine the size/location of the ROOT segment. // Increase _CODE_END to increase ROOT memory, i.e. for constants. -D_CODE_START=0x0000 // Code size = 128k for CC2430-F128 -D_CODE_END=0x4000 // Last address for ROOT bank ******************** f8w2430pm.xcl:
// CODE //
// These settings determine the size/location of the ROOT segment. // Increase _CODE_END to increase ROOT memory, i.e. for constants. -D_CODE_START=0x0000 // Code size = 128k for CC2430-F128 -D_CODE_END=0x29FF //(原0x28FF) Last address for ROOT bank
Warning[Pe001]: last line of file ends without a newline F:\\emoTion\\IAR\\PK升级\\CC1110-8\\main.c 179 A:
在使用IAR时常常会弹出类似这样一个警告,其实只要在最后一行多加一个回车就不会再有这个警告了. 6Q:
在编写一个串口程序时:编译没有错,但MAKE时就出现下面的错误
undefined external“UART1_ISR”referred in startup A:
串口1中断向量没有定义,实际上是串口1中断向量定义其他名称,而不是UART1_ISR.
出现这样的调试IAR错误时:Fatal error: Unknown exception in driver (#E1),是因为IAR软件没有跟Texas Instruments文件放在同一个系统盘下
Warnin[w6]:
Type conflict for external/entry \module _ST7920; class/struct/union types have different numbers of fields/bases
你看看你的源代码里函数是不是这样写:void XXX(void)
而.h代码里这样声明:void XXX();
.h代码应该这样声明:void XXX(void);
分析:一般Warnin[w6]:问题出在头文件里头,可能有:
1、声明了外部变量,但是用到那个函数的.c文件没有包含那个头文件
2、源代码函数和.h里声明的函数不一样:.c里 void XXX(void),头文件中:void XXX();或者:笔误.hz中 Wight_warn (); .c中: Weight_warn();
3、在.C中定义了,但是没有extern void clean_uart2_rx_buff();声明外部可调用,然后外部调用了它,就有可能出现。 2012.3.26 UESTC
Warning[Pe009]: nested comment is not allowed 注释最好不要嵌套 例如注释1后半部*/
就是最好不要这样 uestc
Warning[Pa082]:
undefined behavior: the order of volatile accesses is undefined in this statement
运算符两边都是volatile变量的警告
这警告有意义.
volatile 意思是:易变的。
用volatile修饰的变量一般不直接参与运算(在运算中值可能在变化),volatile就以为这个变量在运算过程中有可能已经改变了
例如:想计算a * b 要这样:
volatile unsigned char a; volatile unsigned char b;
unsigned char x,y;
x = a; y = b;
return (x * y);
复制代码
建议使用另外一个变量参与计算:
volatile char VVV = 9;
char fun() {
char xxx;
char yyy = 9;
xxx = VVV; return xxx * yyy }
复制代码
Warning[Pe175]:
编译错误:Warning[Pe175]: subscript out of range 原因: 定义了 float value[6] ; 既我们定义的了 value[0]、 value[1]…… value[5],默认从0开始的,而实际中我们用到了value[6],越界了。 2011年 6月2日 Warning[Pe177]: