STM32/STM8技术论坛
直播中

罗茵

7年用户 192经验值
私信 关注
[问答]

uvision4编译缺少stm32f10x_conf.h头文件

如题,在做第一个例程led实验时出现该问题上百度搜说是uvision4缺少旧版本uvision3的文件,我尝试下载一整个STM32F10X到USER文件夹,结果出现invalid redeclaration 的提示,

应该是调入的STM32F10X文件夹中文件和某文件重复了(我就放弃了这种方法)请教各位是怎么解决这个问题的






回帖(41)

罗茵

2018-11-7 08:51:42
本帖最后由 chowalan123 于 2016-10-19 23:16 编辑

问题解决了,我用的板子是stm32f103rbt6,按照原子哥的解决方案,是因为MDK4里面所包含的头文件问题,附链接如下:http://www.openedv.com/posts/list/10955.htm
附解释如下:http://blog.sina.com.cn/s/blog_0414b7360102v0o3.html
(链接侵删)
主要原因还是因为我用MDK4去学习MDK3的教程吧(STM32不完全手册V2.2)
希望对有相同问题的人有帮助,而且我这个是寄存器的例程,好像是和库函数的例程有那么一点区别(我猜的,我是小白,不对的请指教)
谢谢各位指导
举报

易里更

2018-11-7 08:57:27
同意沙发,直接复制其他工程
举报

卓侨汉

2018-11-7 09:11:01
这样效率太慢了,你这样跟直接copy差不多,还不如直接rt建工程,或者用cube建程。
举报

唐瑶

2018-11-7 09:19:35
外设宏定义USE_STDPERIPH_DRIVER
#if !defined  USE_STDPERIPH_DRIVER
/**
* @brief Comment the line below if you will not use the peripherals drivers.
   In this case, these drivers will not be included and the application code will
   be based on direct access to peripherals registers
   */
  /*#define USE_STDPERIPH_DRIVER*/
#endif
如果不适用片内外设,则不要取消  /*#define USE_STDPERIPH_DRIVER*/的注释
注意stm32f10x.h文件的最后有这样的代码:
#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif
stm32f10x_conf.h中包含了所有外设的头文件,因此任意源文件只要包含了stm32f10x.h,就可以在源文件调用任意外设的函数。
若有外设为使用到,在stm32f10x_conf.h注释相应部分,项目编译时就不会在编译去掉的外设。
举报

高颖

2018-11-7 09:26:56
在其他工程复制一个放过去就可以
举报

张婧怡

2018-11-7 09:37:58
题主芯片型号选的是什么
举报

王刚

2018-11-7 09:48:43
缺一个就补一个呗,其他对应工程拷一个过来撒
举报

易里更

2018-11-7 10:06:29
不是缺少,像是头文件重复定义了
举报

唐瑶

2018-11-7 10:12:08
在Define里添加USE_STDPERIPH_DRIVER,在IncludePaths里添加自己工程所在的目录,并把stm32f10x_conf.h复制到工程所在目录下。(stm32f10x_conf.h可以从KeilV5的目录下找到,不要直接指向该文件,因为每个工程可能会根据需要修改)。
举报

陈敏

2018-11-7 10:29:36
这个貌似以前也遇到过,应该是库版本不是同一版本,里面有其他版本的文件在里面,使用统一版本库就好了!~~
举报

蔡妮芩

2018-11-7 10:42:07
看下你的文件路径中的文件夹里是否有stm32f10x_conf.h文件,我也经常自建工程,只把要用的文件添加进去。这个跟uvision3,uvision4或者uvision5关系不大。
举报

孙世珍

2018-11-7 10:58:47
缺什么补什么
举报

罗茵

2018-11-7 11:05:39
引用: lfy1980 发表于 2018-11-7 16:22
题主芯片型号选的是什么

stm32f103R8
举报

李晨灵

2018-11-7 11:19:57
你缺的是F10Xt系列的库文件H,库文件位置是 C:KeilARMINCSTSTM32F10x
举报

罗茵

2018-11-7 11:31:07
引用: nvhyfwe 发表于 2018-11-7 16:33
缺一个就补一个呗,其他对应工程拷一个过来撒

我尝试这样做过,这样就出现了invalid redeclaration的提示
举报

罗茵

2018-11-7 11:49:09
引用: jjfuwerwer 发表于 2018-11-7 16:56
在Define里添加USE_STDPERIPH_DRIVER,在IncludePaths里添加自己工程所在的目录,并把stm32f10x_conf.h复制到工程所在目录下。(stm32f10x_conf.h可以从KeilV5的目录下找到,不要直接指向该文件,因为每个工程可能会根据需要修改)。

我这样操作后,会继续提示缺少stm32f10x_type.h,  stm32f10x_lib.h,  stm32f10x_map.h,  cortexm3_macro.h这些文件的提示,添加这些文件后就会出现invalid redeclaration的提示
举报

罗茵

2018-11-7 11:57:30
引用: 易元空灭 发表于 2018-11-7 17:26
看下你的文件路径中的文件夹里是否有stm32f10x_conf.h文件,我也经常自建工程,只把要用的文件添加进去。这个跟uvision3,uvision4或者uvision5关系不大。

我按照提示把文件一个一个添加进去,然后会出现提示invalid redeclaration的提示
举报

罗茵

2018-11-7 12:12:49
引用: yuxiangxyz 发表于 2018-11-7 18:04
你缺的是F10Xt系列的库文件H,库文件位置是 C:KeilARMINCSTSTM32F10x

我看了一下这个文件夹,发现确实没有这些文件,只有system_stm32f10x.h和system_stm32f10x_cl.h等四个文件,然后我把这些库文件添加到这个文件夹,然后它提示(和我把MDK4提示缺失的文件逐个添加一样):D:MDK4ARMIncSTSTM32F10xstm32f10x_type.h(23): error:  #256: invalid redeclaration of type name "s32" (declared at line 487 of "stm32f10x.h")
举报

李衍安

2018-11-7 12:24:57
从其他有的工程中复制一个过去就行了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分