这个问题是因为宏USE_STDPERIPH_DRIVER没有打开,Options->C/C++ Compiler的Preprocessor页的Defined symbols中加上USE_STDPERIPH_DRIVER ,就不会再有这个告警、错误。
USE_STDPERIPH_DRIVER又是定义在哪里,干什么用?
USE_STDPERIPH_DRIVER定义在stm32f10x.h中
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
/* #define STM32F10X_LD */ /*!< STM32 Low density devices */
/* #define STM32F10X_MD */ /*!< STM32 Medium density devices */
#define STM32F10X_HD /*!< STM32 High density devices */
#endif
把这个宏打开,也是解决连接出错的一种方法。
那它到底和assert_param有什么关系呢?我们继续查找这个文件中的USE_STDPERIPH_DRIVER,发现
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif
而stm32f10x_conf.h中就定义了assert_param。