搜索
bottom↓
回复: 23

IAR Embedded Workbench 6.3 for ARM 编译问题

[复制链接]

出0入0汤圆

发表于 2011-11-4 09:58:47 | 显示全部楼层 |阅读模式
用6.3编译时会提示 core_cm3.h里面的内联函数错误
Error{pe147] declaration is incompatible with"_interwork _softfp unsigned long _get_PSP(void)
同样的程序在6.1下编译是没有问题的

出0入0汤圆

发表于 2011-11-4 10:50:16 | 显示全部楼层
版本升级了,可能是要求更为严格,貌似在函数声明和引用的地方不一致了

出0入0汤圆

 楼主| 发表于 2011-11-4 11:12:01 | 显示全部楼层
声明是在core_cm3.c里回复【1楼】wychao
-----------------------------------------------------------------------

声明是在core_cm3.c里,提示错误是在core_cm3.h里,h文件里是外部引用。我仔细看了看,声明和引用一致的。
这两个文件是官方文件,只读的。NND,好像和6.21里出的问题有点相仿,但按照6.21提供的办法还是不能解决。
实在不行还得换回6.1吧~郁闷

出0入0汤圆

 楼主| 发表于 2011-11-5 14:55:16 | 显示全部楼层
今天编译了一下STM32F10x_StdPeriph_Driver V3.5.0,提示错误如下:

(原文件名:90.jpg)

出0入0汤圆

 楼主| 发表于 2011-11-5 14:59:49 | 显示全部楼层
这是编译时提示的错误
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)" (declared at line 52 of "D:\Program Files\IAR Systems\Embedded  C:\Users\JINGHY\Desktop\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1084
这是错误的地方
/**
* @brief  Return the Process Stack Pointer
*
* @return ProcessStackPointer
*
* Return the actual process stack pointer
*/
extern uint32_t __get_PSP(void);就是这句

出0入0汤圆

 楼主| 发表于 2011-11-5 15:04:03 | 显示全部楼层
这是core_cm3.c里面的函数定义
/**
* @brief  Return the Process Stack Pointer
*
* @return ProcessStackPointer
*
* Return the actual process stack pointer
*/
uint32_t __get_PSP(void)
{
  __ASM("mrs r0, psp");
  __ASM("bx lr");
}

出0入0汤圆

发表于 2011-11-5 15:07:18 | 显示全部楼层
把core_cm3.h里面这句给注释掉,然后加上一句
#if defined (__ICCARM__)
//#include <intrinsics.h>                     /* IAR Intrinsics   */
__intrinsic void __DSB(void);
#endif
完全没有任何警告和错误。
我的是IAR6.3+STM32F10x_StdPeriph_Driver V3.5.0

出0入0汤圆

 楼主| 发表于 2011-11-5 15:25:32 | 显示全部楼层
回复【6楼】i55x
-----------------------------------------------------------------------

非常感谢,正解。
看来要还是要再学习一下IAR的编译环境呀

出0入0汤圆

发表于 2011-11-5 15:42:34 | 显示全部楼层
还有一个简单地解决方案,用6.1的intrinsics.h替换6.3版本的就可以解决,可惜我的被6.3冲掉了。

出0入0汤圆

发表于 2011-11-5 15:45:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-6 13:50:59 | 显示全部楼层
为何我编译速度奇慢呢?

出0入0汤圆

发表于 2012-2-1 09:50:13 | 显示全部楼层
mk

出0入0汤圆

发表于 2012-2-1 10:46:03 | 显示全部楼层
楼主在哪找到的6.3,可不可以给我一份。我的邮箱是644507522@qq.com谢谢楼主啦!

出0入0汤圆

发表于 2012-2-1 10:51:02 | 显示全部楼层
这个东西我也遇到了,不过我是把这个东西注释掉就可以了 core_cm3.h里的这个!
!#if defined (__ICCARM__)
  //#include <intrinsics.h>                     /* IAR Intrinsics   */
#endif

和楼上的一位有点一样,我没有加其它东西,我想的是竟然的地方都申明 了就没有必要在申明了!
修改原因:增加说明!

出0入0汤圆

发表于 2012-2-1 11:18:21 | 显示全部楼层
IAR 6.3 需要做一些设置的 见:
http://www.cnblogs.com/ele-eye/archive/2011/11/28/2266229.html

出0入0汤圆

发表于 2012-2-6 17:36:06 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5212061

出0入0汤圆

发表于 2012-2-7 20:18:00 | 显示全部楼层
CMSIS的问题,需要改项目配置

出0入0汤圆

发表于 2012-2-17 14:15:43 | 显示全部楼层
http://ayours.blog.163.com/blog/static/2075886201111610462771/
ST的固件库中一直包含的是CMSIS 1.30的库,IAR升级的6.21后,Intrinsics.h和旧的CMSIS头文件冲突,要么将Intrinsics.h用5.x版本的替换,这样仍然使用CMSIS 1.3的版本。归咎冲突的原因,就是6.21的版本中包含了CMSIS 2.0的库,导致新旧版本头文件混合调用冲突。

出0入0汤圆

发表于 2012-3-28 13:08:02 | 显示全部楼层
i55x 发表于 2011-11-5 15:07
把core_cm3.h里面这句给注释掉,然后加上一句
#if defined (__ICCARM__)
//#include                       ...

的确有效!看来还是自己学的太少啊。

出0入30汤圆

发表于 2012-4-6 10:40:42 | 显示全部楼层
难怪一直编译不过去,我用的6.2的,注释再加一句就OK了。

出0入0汤圆

发表于 2012-6-5 13:40:43 | 显示全部楼层

出0入0汤圆

发表于 2012-6-22 16:45:56 | 显示全部楼层
请问楼主或是各位高手 我的core_cm3.h里面找不到那个注释的位置啊

出0入0汤圆

发表于 2012-7-31 10:12:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-10-17 14:16:16 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 05:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表