初学STM32,在RealViewMDK环境中运用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”,按下“Ctrl+F”键,查找USE_STDPERIPH_DRIVER,在“FindWhat”栏中输入“USE_STDPERIPH_DRIVER”。点击“FindNext”,呈现“USE_STDPERIPH_DRIVER”对应的代码行,重复上边操作三次,第三次的时分咱们能在第8296-8298行找到
#ifdefUSE_STDPERIPH_DRIVER
#include”stm32f10x_conf.h”
#endif
这段代码的意思是,只有用预编译指令预界说了“USE_STDPERIPH_DRIVER”,才会将”stm32f10x_conf.h”包括进“stm32f10x.h”中,然后被”main.c”用到。这就解说了,为什么咱们没有在“main.c”中包括”stm32f10x_conf.h”,而在编译之后却被包括进了”main.c”中。”stm32f10x_conf.h”文件相当于一个开关文件,假如要用到STM32固件库驱动规范外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在”stm32f10x_conf.h”中咱们经过代码
#include”stm32f10x_gpio.h”
来完成这个操作。
提到这儿估量咱们现已对“USE_STDPERIPH_DRIVER”的来龙去脉有个明晰的知道了吧?其实单从字面意思了解便是“运用规范外设驱动”,在C/C++预界说中参加“USE_STDPERIPH_DRIVER”便是答应“运用规范外设驱动”了。至于参加的“STM32F10X_HD“相同能在文件”stm32f10x.h“经过如上所述的办法经过功用查找来进行解说,其实它也是关于对应硬件的某些界说起开关效果算了。
别的需求留意的是,在运用不同版别库的时分,因为有所不同(当然包括MDK自带的库),所以咱们需求在包括的时分必定要留意选对途径,以免不同版别之间的一些界说因为所在的文件不同而发生抵触。