(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o).

今天在学习搭建固件库时遇到了一个问题,32在编译的时候会报Error: L6218E: Undefined symbol assert_param (referred from misc.o).的错误,上网查了一下发现没有很全面的解答,整理资料后总结一下跟大家分享。

一、报错图片(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第1张图片

图片大致内容是没有定义assert_param,所以解决问题思路就是在库文件中寻找assert_param

二、解决办法

解决方法1:

根据报错内容(referred from misc.o)可以看出问题出在misc.c文件中(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第2张图片
通过ctrl+f确定了位置后鼠标放在红线上,根据报错提示发现是缺少宏的问题

2.在C\C++设置一栏中输入USE_STDPERIPH_DRIVER使宏生效即可解决问题(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第3张图片


解决办法2

我们先了解这个报错的本质:
首先库文件中引用了定义的assert_param,但是编译器没有找到assert_param,原因是assert_param在头文件stm32f10x_conf.h中,如图(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第4张图片
而要想使用该头文件则需要使用宏USE_STDPERIPH_DRIVER(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第5张图片
所以另一种解决办法就很明朗了,在stm3210x.h文件中8926行前加入#define USE_STDPERIPH_DRIVER使该宏定义直接生效,这个方法较第一种方法的好处就是一劳永逸,不过建议不要修改官方库文件,所以在此还是更推荐第一种方法

3.成功解决问题(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o)._第6张图片


你可能感兴趣的:(STM32,stm32,嵌入式硬件,单片机)