您的位置 首页 方案

关于STM32头文件

用keilsdk编译STM32的程序时出现.\inc\stm32f10x_conf.h(21):error:#5:cannotopensourceinputfilestm32f10x_type.h..

keil sdk编译STM32的程序时呈现“.\inc\stm32f10x_conf.h(21): error: #5: cannot open source input file “stm32f10x_type.h”: No such file or directory”相似的问题,阐明没有搜到此头文件,如果是用双引号 “ ” 包括的头文件,则问题必定出在没有把此头文件放在工程文件夹内。

还有一个问题,现已把此头文件放在了工程文件夹内,可是编译时呈现这个问题:.\inc\stm32f10x_type.h(28): error: #256: invalid redeclaration of type name “s32” (declared at line487of “.\inc\stm32f10x.h”),没有任何置疑,过错提示现已明确地说s32这个姓名现已在inc\stm32f10x.h的487行界说过,所以stm32f10x_type.h中对s32的界说归于重复界说,无效。

那么为什么会呈现重复界说呢? 经过双击该提示到stm32f10x_type.h界说s32的当地,以及到stm32f10x.h的第487行界说s32的当地,会发现果然有相同的界说,

如图所示:

这是不同的头文件,并且在stm32f10x.h这个头文件中会包括stm32f10x_type.h(如图,stm32f10x.h包括了另一个头文件stm32f10x_conf.h,而在stm32f10x_conf.h里边包括了stm32f10x_type.h,即相当于stm32f10x.h中包括stm32f10x_type.h——即①包括了②,②包括了③,那么①就包括了③,有点烦琐,但会显得更清楚一些,呵呵),

为什么还会呈现在这两个相关联的头文件中界说了同一个姓名s32呢?

问题就出在版别上。

在我的这个工程中,由于我计划都用双引号 “ ” 来包括头文件,所以要把头文件都放到我的工程文件夹里,并设置好途径(这儿不细说,有问题加后边的QQ联络)。问题就来了,stm32f10x.h这个头文件是keil mdk中的,途径为\keil mdk\ARM\INC\ST\STM32F10x,而stm32f10x_conf.h是来自我从前装置的IAR编译里的(前面说了,stm32f10x.h中是会包括stm32f10x_conf.h的。至于为什么会把IAR这个编译器中的头文件放进去,就不说了,呵呵),正确的办法是仅仅用一个编译器中的头文件,确保版别的一致性,在我的工程中,应该运用kei mdk中的stm32f10x_conf.h,而不是IAR中的。

那么咱们看看这不同的编译器中的同名头文件有什么区别,如下图:

左面的是Keil中的,版别为V3.5.0,右边是IAR中的,版别为V1.0,版别不同!!!

版别不同,里边界说的内容不同,自然会呈现不能替换的问题了。

所以要特别注意相关联的头文件(有包括联系的)是不是来自同一个版别。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/276913.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部