解决STM32报错:L6218E:未定义符号assert_param(来自misc.o)

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

一、报错图片请添加图片描述

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

二、解决办法

解决方法1:

根据报错内容(referred from misc.o)可以看出问题出在misc.c文件中请添加图片描述
通过ctrl+f确定了位置后鼠标放在红线上,根据报错提示发现是缺少宏的问题

2.在C\C++设置一栏中输入USE_STDPERIPH_DRIVER使宏生效即可解决问题请添加图片描述


解决办法2

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

3.成功解决问题请添加图片描述


物联沃分享整理
物联沃-IOTWORD物联网 » 解决STM32报错:L6218E:未定义符号assert_param(来自misc.o)

发表评论