keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的緣由

初學STM32,在RealView MDK 環境中使用STM32固件庫創建工程時,初學者可能會遇到編譯不經過的問題。出現以下警告或錯誤提示:3d

  warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));blog

  這時候咱們須要在「Target Options」中的「C/C++」選項卡中如圖-2所示紅框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。這樣才能使編順利經過。ci

圖-2get

知其然了,咱們還得知其因此然。下面就聽Herison給你們一一道來。咱們知道,程序的執行是從「main.c」文件開始的,其中必須包含有頭文件「stm32f10x.h」。咱們打開「stm32f10x.h」,按下「Ctrl+F」鍵,查找USE_STDPERIPH_DRIVER,在「Find What」欄中輸入「USE_STDPERIPH_DRIVER」。如圖-3所示。點擊「Find Next」,出現「USE_STDPERIPH_DRIVER」對應的代碼行,重複上邊操做三次,第三次的時候咱們能在第8296-8298行找到如圖-4所示代碼段。it

圖-3io

圖-4編譯

 

  這段代碼的意思是,只有用預編譯指令預約義了「USE_STDPERIPH_DRIVER」,纔會將"stm32f10x_conf.h"包含進「stm32f10x.h」中,從而被"main.c"用到。這就解釋了,爲何咱們沒有在「main.c」中包含"stm32f10x_conf.h",而在編譯以後卻被包含進了"main.c"中,出現如圖-5所示的狀況。        "stm32f10x_conf.h"文件至關於一個開關文件,若是要用到STM32固件庫驅動標準外設,則外設驅動頭文件是必不可少的,如「stm32f10x_gpio.h」。在"stm32f10x_conf.h"中咱們經過代碼#include "stm32f10x_gpio.h"來實現這個操做。function

圖-5硬件

  說到這兒估計你們已經對「USE_STDPERIPH_DRIVER」的前因後果有個清晰的認識了吧?其實單從字面意思理解就是「使用標準外設驅動」,在C/C++預約義中加入「USE_STDPERIPH_DRIVER」就是容許「使用標準外設驅動」了。至於加入的「STM32F10X_HD「一樣能在文件」stm32f10x.h「經過如上所述的方法經過功能查找來進行解釋,其實它也是對於對應硬件的某些定義起開關做用罷了。程序

相關文章
相關標籤/搜索