在uVision中新建STM32工程後,須要從STM32標準庫中拷貝標準外設驅動到本身的工程目錄中,此時須要在工程設置->C/C++選項卡下的Define文本框中鍵入這兩個全局宏定義。spa
STM32F40_41xxx,USE_STDPERIPH_DRIVER
USE_STDPERIPH_DRIVERcode
這個說明你在使用標準外設驅動,有本身的外設配置文件,即stm32f10x_conf.h,詳細可查看stm32f4xx.h中12026-12017行。關於stm32f4xx_conf.hblog
文件中的內容,是有選擇的#inlude "stm32f4xx_conf.h",這樣只編譯須要的外設文件,減小hex文件的體積。若是沒有使用這個宏,或沒有stm32f10x_conf.h文件,那麼編譯時會有一大堆莫名奇妙地錯誤,這是由於MDK中也自帶了stm32f40x_xxxx.h文件,使得編譯器使用MDK中.h文件,而.c文件和.h文件版本是不匹配的。ip
注意,若是是庫文件的錯誤,那必定是你工程配置有問題。ci
Use Standard Peripheral Driver
在Keil MDK環境中使用STM32固件庫創建工程時,可能會遇到編譯不經過的問題。出現以下警告或錯誤提示:
warning:#223-D:function"assert_param"declaredimplicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));get
這時候咱們須要在設置面板的「TargetOptions」中「C/C++」選項卡添加STM32F40_41xxx,USE_STDPERIPH_DRIVER。這樣才能使編順利經過。編譯器
知其然了,咱們還得知其因此然。下面就一一道來。咱們知道,程序的執行是從main.c文件開始的,其中必須包含有頭文件stm32f4xx.h。打開stm32f4xx.h,查找USE_STDPERIPH_DRIVER,在第12026-12017行找到it
#ifdef USE_STDPERIPH_DRIVER #include "stm32f4xx_conf.h"