2 问题分析
函数assert_param是STM32官方库文件中用到的。
对于我采用的《STM32F10x_StdPeriph_Lib_V3.5.0》库文件来说,assert_param函数在文件“stm32f10x_conf.h”的第59-73行。
查看函数说明可知,assert_param是一个条件表达式宏定义,主要作用是对函数的输入参数进行检查。仔细查看程序段,不管是否定义USE_FULL_ASSERT,函数assert_param均有定义,编译时不应该出现上述警告。
还有一种可能,那就是虽然定义了函数assert_param,但是包含定义的文件“stm32f10x_conf.h”没有被编译。
在工程文件中搜索字符“stm32f10x_conf.h”,在文件“stm32f10x.h”的第8301-8303行找到程序段。
这段代码的意思:如果定义USE_STDPERIPH_DRIVER,则包含文件“stm32f10x_conf.h”。同样的,如果没定义则不包含。
在工程中搜索文本USE_STDPERIPH_DRIVER,没有找到有关 USE_STDPERIPH_DRIVER的宏定义,因此也就没有包含stm32f10x_conf.h文件,工程中也就没有assert_param的声明。
文本“USE_STDPERIPH_DRIVER”的字面意思:使用标准外设驱动。也就是说如果需要使用ST官方提供的外设驱动库则需要定义“USE_STDPERIPH_DRIVER”。
很明显问题出在使用了官方的标准外设库又没有定义“USE_STDPERIPH_DRIVER”。
|