STM32F10xxx_Keil中新增的預定義巨集
阿新 • • 發佈:2018-12-15
更新記錄
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
表示晶片是大容量產品。