当前位置: 代码迷 >> 单片机 >> keil报错:stm32f10x_type.h(23):error:256:invalid invalid redeclaration of type,该怎么处理
  详细解决方案

keil报错:stm32f10x_type.h(23):error:256:invalid invalid redeclaration of type,该怎么处理

热度:95   发布时间:2016-04-28 15:52:58.0
keil报错:stm32f10x_type.h(23):error:#256:invalid invalid redeclaration of type
keil 4.00。
在ST官网上下的固件包,用STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template里的工程,编译正确。

以下尝试了两种新建工程的方法,均失败:
1。 将固件包里的例程和相应的CMSIS、StdPeriph_Driver拷到工程下,修改target options里的C/C++ include paths项为“..\;..\Src\App;..\Src\CMSIS;..\Src\Lib”,编译报错“D:\Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of "Src\App\stm32f10x.h")”等。

2。 若在工程中添加的文件为固件包中的链接(而不是拷贝),完全按照template里的结构,并将include paths按照template进行修改,编译报错“Keil\ARM\INC\ST\STM32F10x\stm32f10x_conf.h(147): warning: #47-D: incompatible redefinition of macro "HSE_Value" (declared at line 511 of "STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h")”等。

推测KEIL安装目录下的为旧版lib,工程中使用的为新版,两者代码结构上有所不同。而编译器在编译了工程文件的同时,自动链接了KEIL安装目录下的文件,造成冲突。但是在选项中没找到配置是否链接KEIL安装目录下LIB的地方。不知推测是否正确,解决方法又如何。求指教。

------解决方案--------------------
你配置的路径可能有问题,那没有找到就直接用自带的库了。
..\inc;..\..\Libraries\STM32F10x_StdPeriph_Driver\inc;..\..\Libraries\CMSIS\Core\CM3;
我的配置信息参考下
------解决方案--------------------
错误说你重定义了类型,不知道是不是多次引入了同一个文件。。。

检查一下项目中的源文件
  相关解决方案