
今天用IAR 6.4打开 6.3的工程,编译时发现一大堆的错误, 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 首先发现是头文件包含路径丢失; 添加方法: 1. 右击工程Options->选择C/C++ Compiler ->Preprocessor 添加相对路径,如下示例: $PROJ_DIR$\..\..\Libraries\STM32F2xx_StdPeriph_Driver\inc $PROJ_DIR$\..\..\Project\Audio $PROJ_DIR$\..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx $PROJ_DIR$ 是工程所在路径。 2. 由于版本不同,所以打工工程时,CPU选择时会默认为ARM7,所以要修改; 修改方法如下: 右击工程Options->选择General Options ->Target ,选择Device,在其中选择自己的CPU型号。 3. 可能出现core_cm.h文件不一致的问题,修改方法如下: 1,把老的core_cm3.h去掉,删除,或者改成core_cm3.h.old。 2,Project -> Options -> General Options -> Library Configuration -> Use CMSIS,右下角的选项中选择 use CMSIS |