找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8958|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-29 17:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

如果在STM32工程編譯時(shí)沒(méi)有添加USE_STDPERIPH_DRIVER,STM32F10X_HD時(shí)會(huì)出現(xiàn)如下錯(cuò)誤:..\library\cortex_m3\stm32f10x.h(96): error: #35: #error directive: "Please select first thetarget STM32F10x device used in your application (in stm32f10x.hfile)"
這時(shí)候我們需要在“Target Options”中的“C/C++”選項(xiàng)卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。這樣才能使編順利通過(guò)。


那么這個(gè)錯(cuò)誤是怎么產(chǎn)生的呢?



這是由于程序編譯的過(guò)程中調(diào)用stm32f10x_conf.h頭文件。為什么我們沒(méi)有在“main.c”中包含"stm32f10x_conf.h",而在編譯之后卻被包含進(jìn)了"main.c"中,"stm32f10x_conf.h"文件相當(dāng)于一個(gè)開(kāi)關(guān)文件,如果要用到STM32固件庫(kù)驅(qū)動(dòng)標(biāo)準(zhǔn)外設(shè),則外設(shè)驅(qū)動(dòng)頭文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我們通過(guò)代碼#include"stm32f10x_gpio.h"來(lái)實(shí)現(xiàn)這個(gè)操作。其實(shí)單從字面意思理解就是“使用標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)”,在C/C++預(yù)定義中加入“USE_STDPERIPH_DRIVER”就是允許“使用標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)”了。至于加入的“STM32F10X_HD“同樣能在文件”stm32f10x.h“通過(guò)如上所述的方法通過(guò)功能查找來(lái)進(jìn)行解釋?zhuān)鋵?shí)它也是對(duì)于對(duì)應(yīng)硬件的某些定義起開(kāi)關(guān)作用罷了。





今天碰到了下面圖(1)這個(gè)問(wèn)題,導(dǎo)致問(wèn)題的直接原因是 工程沒(méi)有包含 stm32f10x_tim.h這個(gè)文件,而stm32f10x_tim.h 包含在stm32f10x_conf.h這個(gè)文件中,stm32f10x_conf.h又包含在stm32f10x.h這個(gè)文件中。做了兩個(gè)嘗試:(1)直接將stm32f10x_tim.h添加到該文件中,錯(cuò)誤消除。(2)將stm32f10x.h添加到文件中,錯(cuò)誤沒(méi)有消失。為什么?見(jiàn)圖(2)

圖(1)

如下圖所示,stm32f10x.h這個(gè)文件的最后有句
#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif     即只有在將USE_STDPERIPH_DRIVER配置在圖(3)所示的選項(xiàng)中時(shí),stm32f10x.h 才包含stm32f10x_conf.h
這個(gè)文件。而之前圖3的選項(xiàng)中已經(jīng)進(jìn)行了配置,猜想可能是字符串有誤,所以直接從stm32f10x.h文件中復(fù)制粘貼過(guò)去,錯(cuò)誤消失,問(wèn)題解決。


      圖(2)





圖(3)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:241407 發(fā)表于 2018-7-3 01:20 | 只看該作者
特意登陸點(diǎn)個(gè)贊,這里才是正解,就是打的時(shí)候define字串錯(cuò)了,STM32F10X_ HD的HD前面多了個(gè)空格,是商家的源碼,商家太粗心了,浪費(fèi)我好久,給你點(diǎn)個(gè)贊,希望遇到問(wèn)題的小伙伴能看到正解,而不是廢話
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表