找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8326|回复: 1
打印 上一主题 下一主题
收起左侧

error: #35: #error directive: "Please select first thetarget

[复制链接]
跳转到指定楼层
楼主
ID:91350 发表于 2015-10-29 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如果在STM32工程编译时没有添加USE_STDPERIPH_DRIVER,STM32F10X_HD时会出现如下错误:..\library\cortex_m3\stm32f10x.h(96): error: #35: #error directive: "Please select first thetarget STM32F10x device used in your application (in stm32f10x.hfile)"
这时候我们需要在“Target Options”中的“C/C++”选项卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。


那么这个错误是怎么产生的呢?



这是由于程序编译的过程中调用stm32f10x_conf.h头文件。为什么我们没有在“main.c”中包含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中,"stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码#include"stm32f10x_gpio.h"来实现这个操作。其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。





今天碰到了下面图(1)这个问题,导致问题的直接原因是 工程没有包含 stm32f10x_tim.h这个文件,而stm32f10x_tim.h 包含在stm32f10x_conf.h这个文件中,stm32f10x_conf.h又包含在stm32f10x.h这个文件中。做了两个尝试:(1)直接将stm32f10x_tim.h添加到该文件中,错误消除。(2)将stm32f10x.h添加到文件中,错误没有消失。为什么?见图(2)

图(1)

如下图所示,stm32f10x.h这个文件的最后有句
#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif     即只有在将USE_STDPERIPH_DRIVER配置在图(3)所示的选项中时,stm32f10x.h 才包含stm32f10x_conf.h
这个文件。而之前图3的选项中已经进行了配置,猜想可能是字符串有误,所以直接从stm32f10x.h文件中复制粘贴过去,错误消失,问题解决。


      图(2)





图(3)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:241407 发表于 2018-7-3 01:20 | 只看该作者
特意登陆点个赞,这里才是正解,就是打的时候define字串错了,STM32F10X_ HD的HD前面多了个空格,是商家的源码,商家太粗心了,浪费我好久,给你点个赞,希望遇到问题的小伙伴能看到正解,而不是废话
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表