keil MDK invalid redeclaration of type name.doc_第1页
keil MDK invalid redeclaration of type name.doc_第2页
keil MDK invalid redeclaration of type name.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

keil MDK invalid redeclaration of type name s32 根本原因我的观点:这个问题的原因就是头文件包含路径的设置问题头文件的设置路径Include Paths 这一项中我们经常看到 .*;.* 或.*;.*的设置为什么路径中有的使用“.*” 而有的使用“ .*”?路径中的“.”为工程文件上一级目录,“.”为工程文件的同级目录。一、假设你的工程有如下文件夹结构:ProjectCMSISSTM32F10x_StdPeriph_DriverUseruCOS-IImy_project.uvproj / 此工程文件与上面的文件夹是并列的这时Include Paths 路径中就应该使用“.CMSIS;.STM32F10x_StdPeriph_Driver;.User;.uCOS-II”二、假设你的工程有如下文件夹结构:ProjectCMSISSTM32F10x_StdPeriph_DriveruCOS-IIUsermy_project.uvproj / 此工程文件在User目录下这时Include Paths 路径中就应该使用“.CMSIS;.STM32F10x_StdPeriph_Driver;.User;.uCOS-II”三、假设你的工程有如下文件夹结构:ProjectCMSISSTM32F10x_StdPeriph_DriveruCOS-IIUserEvalmy_project.uvproj / 此工程文件在User目录下这时Include Paths 路径中就应该使用“.CMSIS;.STM32F10x_StdPeriph_Driver;.User;.uCOS-II”此次类推 my_project.uvproj工程文件埋藏几级就使用几个.网友分享的解决方法:(有一定道理,但没有在根源上)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的地方。问题原理:对照固件包中模板工程的链接情况,逐个对比模板工程和自建工程中,各源代码链接的所需库的位置。若模板中链接的是固件包中的文件,如system_stm32f10x.h 或 stm32f10x_config.h,即新版lib;而自建工程中链接的相应文件位置为Keil安装目录,说明工程设置中没有包含该库的路径,使编译器自动寻找安装目录中的旧版文件。由于库代码结构不同,造成编译错误。因此需要在工程设置的include paths栏中添加新版lib的路径。问题解决:1、对于第二种建立工程的步骤,通过报错的信息很容易看出,编译过程链接了keil安装目录下的conf.h,而实际需要使用固件包中的该文件。因此,在include paths中添加固件包conf.h所在目录,即可解决问题。2、对于第一种建立工程的步骤,stm32f10x_type.h不是工程源代码中直接需要包含和应用的头文件,不容易找到未设定的链接路径。因此,采用“问题原理”中的办法,逐一链接库对比,修改链接路径,也可以找到未包含的位置,解决问题。还需要注意区分的是,路径中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论