1. 程式人生 > >STM32F10xxx_Keil中新增的預定義巨集

STM32F10xxx_Keil中新增的預定義巨集

更新記錄

version status description date author
V1.0 C Create Document 2018.10.15 John Wan

status: C―― Create, A—— Add, M—— Modify, D—— Delete。

Use Standard Peripheral Driver

  在Keil MDK環境中使用STM32韌體庫建立工程時,可能會遇到編譯不通過的問題。出現如下警告或錯誤提示: warning:#223-D:function"assert_param"declaredimplicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  這時候我們需要在設定面板的“TargetOptions”“C/C++”選項卡新增USE_STDPERIPH_DRIVER. STM32F10X_HD。這樣才能使編順利通過。

  知其然了,我們還得知其所以然。下面就一一道來。我們知道,程式的執行是從main.c檔案開始的,其中必須包含有標頭檔案stm32f10x.h。開啟stm32f10x.h,查詢USE_STDPERIPH_DRIVER,在第8296-8298行找到

#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif

  這段程式碼的意思是,只有定義了USE_STDPERIPH_DRIVER

,才包含stm32f10x_conf.h,從而被main.c用到。那麼stm32f10x_conf.h的作用是什麼呢?它相當於一個總的開關檔案,如果要用到STM32韌體庫驅動標準外設,則外設驅動標頭檔案是必不可少的,如stm32f10x_gpio.h等。而這些檔案的新增都是在stm32f10x_conf.h中進行。   而在Keil MDK的面板新增USE_STDPERIPH_DRIVER,其實就是Keil方式的全域性定義,從而使stm32f10x.h檔案包含stm32f10x_conf.h檔案。

  同樣的Keil MDK面板中的STM32F10X_HD是定義晶片的型別,HD表示晶片是大容量產品