先描述下我的问题:欲将之前的散列文件移植到同一个工程中去,于是建立了一个新的IAR工程,再将有关的函数添加到工程中之后,进行编译去除BUG。
遇到的第一个问题是:
"__IO"未定义和"uint32_t"与标准C的stdio.h文件中不相符的问题,这个是老问题了,之前由于IAR的升级后软件环境自动集成了CMSIS软件标准的架构,使得无需再次添加core_cm3.c和core_cm3.h文件。
【在core_cm3的文件中定义了访问Cortex-M3内核及其设备:NVIC,SysTick等以及访问Cortex-M3的CPU寄存器和内核外设的函数。在STM32F10x.h中这个文件包含了STM32F10x全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等。】
经过了一系列的周折之后发现在工程指定的STM32F10x.h的478行丢失了#include “core_cm3.h”的头文件包含。于是重新添加编译(此时用的是ST库的Core_cm3.h文件
,预定义路径未修改)。
编译报错:依旧是定义不符,此时先到了软件集成CMSIS的问题,在IAR配置中将路径中的core_cm3.h的路径去除。再次编译,发现找不到头文件core_cm3.h的路径。
为方便百度,现把错误贴出:
Error[Pe065]: expected a ";" F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 497
Error[Pe020]: identifier "__I" is undefined F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499
Error[Pe256]: invalid redeclaration of type name "int32_t" (declared at line 26 of "D:\Program Files (x86)\IAR Systems\Embedded F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499
Workbench 6.0\arm\inc\c\stdint.h")
Error[Pe065]: expected a ";" F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499