求助,IAR 6.20 无论编译什么项目都提示错误

[复制链接]
14930|17
 楼主| coolie2009 发表于 2011-7-19 09:31 | 显示全部楼层 |阅读模式
打开一个别人编译正常的项目(用IAR5.5建立的),编译时提示如下错误:

Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)"
(declared at line 52 of "xx:\IAR Systems6\Embedded Workbench 6.0\arm\inc\c\intrinsics.h")

FILE:
  xx:\CMSIS\CM3\CoreSupport\core_cm3.h 1084

==========================================

intrinsics.h文件中报错处的内容:
    __intrinsic unsigned long __get_PSP( void );

core_cm3.h文件名中报错处的内容:
    extern uint32_t __get_PSP(void);

好像唯一的区别就是 unsinged long 和 uint32_t

类似的错误有几百个。。。

请问各位高手该从何处入手解决问题捏。。。
上官金虹 发表于 2011-7-19 10:07 | 显示全部楼层
把CMSIS\CM3\CoreSupport\删掉。
用IAR自带的CMSIS。
 楼主| coolie2009 发表于 2011-7-19 10:33 | 显示全部楼层
感谢楼上,我请你喝酒!:lol
 楼主| coolie2009 发表于 2011-7-19 10:50 | 显示全部楼层
再问一下楼上高手,我编译后出现一个 *.out文件,怎么才能让它输出hex文件呢?
上官金虹 发表于 2011-7-19 11:12 | 显示全部楼层
Converter options
Image0345.JPG
 楼主| coolie2009 发表于 2011-7-19 11:16 | 显示全部楼层
找到了,谢谢
 楼主| coolie2009 发表于 2011-7-19 18:04 | 显示全部楼层
高手还在吗?怎么在IAR中使用标准C函数 gmtime、mktime等。

以前用4.42的时候可以用的,现在用6.2发现全变成未定义了。

而且把6.2工程里一些c文件和h文件加入4.42的项目中,原来使用这些函数正常的地方,也开始报错了。。。
上官金虹 发表于 2011-7-19 18:10 | 显示全部楼层
gmtime、mktime 没用过。
可能是库设置不对。

楼主可以上传一个反映错误的最小工程。
香水城 发表于 2011-7-19 18:24 | 显示全部楼层
高手还在吗?怎么在IAR中使用标准C函数 gmtime、mktime等。

以前用4.42的时候可以用的,现在用6.2发现全变成未定义了。

而且把6.2工程里一些c文件和h文件加入4.42的项目中,原来使用这些函数正常的地方,也开始报 ...
coolie2009 发表于 2011-7-19 18:04


建议你查查IAR的手册,看看调用这些函数需要包含哪些头文件,或自己到IAR的头文件目录中搜索一下,看看哪个头文件中有这些函数的原型说明。
 楼主| coolie2009 发表于 2011-7-19 18:29 | 显示全部楼层
建议你查查IAR的手册,看看调用这些函数需要包含哪些头文件,或自己到IAR的头文件目录中搜索一下,看看哪个头文件中有这些函数的原型说明。
香水城 发表于 2011-7-19 18:24


头文件 time.h已经包含了。。。

不过里面定义在一个宏判断之内:

#if !defined(_NO_DEFINITIONS_IN_HEADER_FILES) && !__AEABI_PORTABILITY_INTERNAL_LEVEL
 楼主| coolie2009 发表于 2011-7-19 18:32 | 显示全部楼层
不好意思,找到原因了,原来项目里还有另外一个“time.h”的文件。怎么能让编译器知道我是要include哪个呢? 用绝对路径吗?

另外一个存在于一个开源系统中,也不好去改它的名字。
dlyltm 发表于 2011-7-22 16:25 | 显示全部楼层
请问楼主,IAR 6.2的和谐文件有吗?能否发一个给我:hnltm@126.com
afanti 发表于 2011-7-22 16:50 | 显示全部楼层
上官兄,请教一下,我用你在5楼的方法,生成hex的文件在用Flash Loader烧写时,出现了:address not allowed,转换成bin文件也是类似的情况,这是为何?那个地方不对了?谢谢兄长~~~
afanti 发表于 2011-7-23 08:39 | 显示全部楼层
我又查了一下,生成的Hex文件的第一行如下:
:1000000018040020E5040000570400005904000013

表明代码地址是从0x0000开始的,这样不对啊!!!!
kingsabbit 发表于 2014-11-12 23:14 | 显示全部楼层
建议这么做:

把core_cm3.h里面这句给注释掉,然后加上一句
#if defined (__ICCARM__)
//#include <intrinsics.h>                     /* IAR Intrinsics   */
__intrinsic void __DSB(void);
#endif
完全没有任何警告和错误。
jackwmj1 发表于 2015-5-6 23:57 | 显示全部楼层
kingsabbit 发表于 2014-11-12 23:14
建议这么做:

把core_cm3.h里面这句给注释掉,然后加上一句

十五楼帮了大忙:lol
kingsabbit 发表于 2015-7-16 23:32 | 显示全部楼层
jackwmj1 发表于 2015-5-6 23:57
十五楼帮了大忙

这个是试过才知道的
lijunyu2005 发表于 2015-9-19 16:47 | 显示全部楼层
感谢一下15楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部