(已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from 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.成功解决问题请添加图片描述


评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值