IAR MSP430编译报错说明 下载本文

使用无线龙的串口互发,发现上述错误,原因是版本太高,具体原因不清,下载一下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]: