初学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“经过如上所述的方法经过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关做用罢了。程序