标题: error: #256: invalid redeclaration of type name "s32" (declared at [打印本页] 作者: qinqin 时间: 2015-6-9 02:18 标题: error: #256: invalid redeclaration of type name "s32" (declared at 在编译时,遇到如下错误提示D:\Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h(26):error: #256: invalid redeclaration of type name"s32" (declared at line 312 of"D:\Keil\ARM\INC\ST\STM32F10x\stm32f10x.h")让菜鸟我很是头痛,找了好多网页解决不了问题,最后浏览到了51hei给的提示:
重复定义了。
估计你包含了stm32f10x_lib.h又包含了stm32f10x.h,导致这个情况。
这两个,你只能选一个的。
这样我开始了,艰苦的寻找在哪里包含了这两个文件,在主函数里发现了stm32f10x.h头文件,如下所示
解决方案1.1:
关于stm32f103报错:error: #256: invalid redeclaration of type name"s32",我也来说两句吧。
这个具体来说是因为引用了自己建的固件库,但是没有配置路径,要把工程的路径配置为当前文件夹,
可以在keil里面建好的工程里,右击target 1,点击第一个选项“option for targer"targer 1"”,在"C/C++"选项卡里的“Include Paths”一栏里加入你当前自己编辑的固件库路径,我这边的是“.\SRC;.\Libraries\STM32F10x_StdPeriph_Driver\inc;.\Libraries\CMSIS\Core\CM3”,大家可以参考一下,这里面有里有3个文件夹,输入好后,按“ok”按钮,重新编译下,应该就可以了。
解决方案3:
在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")”等。