【EEworld原创教程讨论】使用IAR遇到的问题
[复制链接]
使用IAR编译的时候经常会出现一些莫名其妙的问题,或者提示一些错误,找不到解决的办法.
Warning[Pe001]: last line of file ends without a newline F:\emoTion\IAR在使用IAR时常常会弹出类似这样一个警告,其实只要在最后一行多加一个回车就不会再有这个警告了.
在编写一个串口程序时:编译没有错,但MAKE时就出现类似下面的错误 undefined external“UART1_ISR”referred in startup 串口1中断向量没有定义,实际上是串口1中断向量定义其他名称,而不是UART1_ISR. “Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment definition. At least 0x50 more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)CSTACK+_STACK_SIZE#", ” 此错误是所定义的全局变量和数组缓冲区等所占的RAM超出硬件支持所致:size: 0x50 为超出的大小。只要减少不不要的全局变量和尽量缩小数组缓冲区就可以了!
高版本IAR编译低版本IAR工程提示 Error[412]: Branch to unaligned address。解决办法:是因为对齐方式错误,在错误代码上面加THUMB可以解决。
Warning[Pe167]: argument of type "BYTE *" is incompatible with parameter of type "char * 出现这种情况都是因为变量类型不对,尝试在变量前面增加(char*),改变其类型.
Fatal Error[Cp001]: Copy protection check, No valid license found for this product [20] 这是因为IAR序列号错误导致的,请获取正确的序列号。
Fatal Error[Pe005]: could not open source file "stdio.h" 是因为头文件路径不对造成,改正的方法是在设置选项卡的C/C++ Compiler -> Preprocessor选项里,将$TOOLKIT_DIR$\INC\CLIB\添到Include paths中。($TOOLKIT_DIR$指IAR的安装路径,一般用到标准库函数时要将它写入Include paths里面) IAR对中文的路径名称支持并不好,时常会出现一些莫名其妙的问题,这时候应该避免使用中文的路径
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package CDKEY过期或出错都会出现无法编译或者出现4K限制,请使用有非限制版,或者重新使用新的CDKEY来进行编译,这个问题KEIL比较常见.
|