. S" T& S% N: V! B+ i( F+ v 今天用IAR 6.4打开 6.3的工程,编译时发现一大堆的错误, 4 |+ S6 f3 b9 ~ F Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __STREXH(unsigned short, unsigned short *)" (declared at line 186 of "D:\Program Files (x86)\IAR E:\STM32-P207_P407_IAR_6.30.7_DEMO_V4_1\Libraries\CMSIS\CM3\__CoreSupport(not_used)\core_cm3.h 1186 4 e& e7 Z6 q6 H) q( b $ k. Z o. L; p2 R/ ?4 C! V. z ) v( f4 ?* A5 t9 U) ~+ C* H 首先发现是头文件包含路径丢失;: \. [4 S, q/ @: n 添加方法: 1. 右击工程Options->选择C/C++ Compiler ->Preprocessor0 J0 ], P" }7 d7 | 添加相对路径,如下示例: $PROJ_DIR$\..\..\Libraries\STM32F2xx_StdPeriph_Driver\inc. ?, {& g/ Z+ x- [, s+ R! V $PROJ_DIR$\..\..\Project\Audio $PROJ_DIR$\..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx; I& l8 S/ p( S+ ~( }. M6 Q5 r ' ]7 Q- {9 I& y( O 3 @0 x* t9 D0 ~# v' z" A ' ~9 x; U$ @4 `1 O( V8 i% e $PROJ_DIR$ 是工程所在路径。6 y- ], ]1 g5 ?6 A, C, A4 M 7 Z* S! u4 L- M4 n 2. 由于版本不同,所以打工工程时,CPU选择时会默认为ARM7,所以要修改;' y' `$ l3 Z; Z% g/ L' O 修改方法如下: ; Q; R' y7 \0 W 右击工程Options->选择General Options ->Target ,选择Device,在其中选择自己的CPU型号。1 X e8 R8 z o) W 3 B' g2 @3 B( m8 j 1 R; q8 ^! q! @1 o4 X 5 Z# N* R' j. b 3. 可能出现core_cm.h文件不一致的问题,修改方法如下: 1,把老的core_cm3.h去掉,删除,或者改成core_cm3.h.old。 2,Project -> Options -> General Options -> Library Configuration -> Use CMSIS,右下角的选项中选择 use CMSIS + _2 b" @5 k# L5 v b. l* I 8 Z( f$ M( _, c |