[STM32问题解决(1)]一类问题的解决办法——编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
目录
- 1 问题说明
- 1.1 问题回顾
- 1.2 寻找解答所犯的错误
- 2 解决办法(试用于一系列问题)
- 2.1 重审问题
- 2.1.1 Undefined symbol xxx.c
- 2.1.2 referred from xxxx.o
- 2.2 解决步骤
- 2.2.1 如何寻找xxxx.c的位置?
- 2.2.2 相同办法全局搜索没有定义的“xxx.c”符号
- 2.2.3 继续分析
- 2.2.4 再次编译
- 3 一点说明
- 3.1 为什么全局域搜索可以找到“cortex.h”中也存在这个函数?
- 3.2 我为什么写这篇博客?
1 问题说明
1.1 问题回顾
学习自己手动搭建一个STM32HAL库工程模板文件的时候,我发现了有6个错误,6个错误的类型是一样的,其中有3个通过添加hal_rcc.h和hal_gpio.c文件得以解决。所以另外3个我也想到了时缺少了对应的.c文件导致的错误。
但是在STM32F1xx_HAL_Driver文件夹中,我没有找到类似如有“rcc”和“GPIO”这样的标志性符号。这3个错误如下:
分别是HAL_NVIC_SetPriority,HAL_NVIC_SetProtityGrouping和HAL_SYSTICK_Config。
在STM32F1xx_HAL_Driver文件夹中未找到类似于“NVIC”或者“SYSTICK”的.c文件。
copy了问题在网上也没有找到合适的回答,因为我根本不知道如何描述我的问题。找了一个学长问了之后,他只用了5分钟就帮我解决了问题
1.2 寻找解答所犯的错误
这个问题的解决,在互联网上是无法找打解答的,因为无法描述其问题。打个比方就是:
一个人要煮方便面,但是家里没有锅。于是,这个在网上搜索为什么这个面煮不开。这个问题在互联网上无法回答。
但是,因为煮面过程中,先放调料还是先放面,影响了最后的口感,这个时候是可以在网上询问:怎么煮面更好吃。其他网友才能回复自己的煮面方法。方法并不包括考虑这个提问者是不是家里有锅。
2 解决办法(试用于一系列问题)
2.1 重审问题
…\Output\Template.axf: Error: L6218E: Undefined symbol HAL_NVIC_SetPriority (referred from stm32f1xx_hal.o).
问题中有两个关键词,我们一个一个看
2.1.1 Undefined symbol xxx.c
含义是:“xxx.c”这个符号,没有被定义
2.1.2 referred from xxxx.o
含义是:上面的“xxx.c”文件在xxxx.o中被调用过
“.o”文件是什么?
.o文件在工程里面是没有的,它是在编译过程中由.c文件生成的。所以我们只需要找到工程里面的.c文件即可,这里对应这个名字的就是 xxxx.c 了
2.2 解决步骤
2.2.1 如何寻找xxxx.c的位置?
step1:Ctrl+F弹出搜索框
step2:在Find in Files选项卡中搜索xxxx.c文件
step3:在keil下方会返回在整个工程文件中找到该文件的位置
step4:从左侧任务栏中会找到,这个xxxx.c文件已经存在
2.2.2 相同办法全局搜索没有定义的“xxx.c”符号
得到了以下回复:
出现了HAL_NVIC_SetPriority的.c文件和.h文件有:hal_gpio.c、hal.c和cortex.h
2.2.3 继续分析
从左侧任务栏,可知hal_gpio.c和hal.c已经添加进入工程文件了
寻找一下hal_cortex.h文件
可见,在hal_cortex.h文件中,我们找到了对应函数的声明,缺少了定义,因此需要把hal_cortex.c的文件添加进入工程文件中。
2.2.4 再次编译
发现所有错误全部解决,说明问题“HAL_SYSTICK_Config”的声明和定义也是在“cortex.h”和“cortex.c”中完成的。
至此,问题解决了。
3 一点说明
3.1 为什么全局域搜索可以找到“cortex.h”中也存在这个函数?
原因有两个:
1、打开魔术棒,打开C/C++选项卡,按步骤打开,会发现,我们在之前已经把存储的路径保存了
2、虽然我们没有把“cortex.c”文件放进工程文件,目的是节约编译时间不用把所有hal库文件都放进工程中,但是在“stm32fxx_hal.c”中又调用了所有hal库的“.h”文件。所以在检索的时候,keil可以发现并找到搜索的函数和位置
3.2 我为什么写这篇博客?
1、这个问题是一个非常意外的问题,在互联网上,我暂时还没找到。
2、这种解决问题的思路是我的一个学长教给我的,以前遇到问题我只会在网络检索,现在需要学习直接解决问题的办法和方式步骤。因此,我把它进行了梳理并整理了出来。
3、如何手动搭建一个hal库的工程模板,而不使用cubemx,在之后的博客中,我会再次分享我的经验。(已经写完了: 库函数版的工程模板的搭建(HAL库版本))
[STM32问题解决(1)]一类问题的解决办法——编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).相关推荐
- HAL库 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)的可能原因之一及解决方法
我在学习STM32 HAL库版本时遇到了这种编译问题 由于是刚开始学习STM32代码跟例程是一样的,所以代码不可能出错.我去网上寻找答案看到了 (7条消息) (已解决)STM32报错Error: L6 ...
- *.axf: Error: L6218E: Undefined symbol xxx(xxx.o)问题解决与inline函数的声明
可能每个人错误原因有所不同吧,我在网上看了很多方法,有些不那么靠谱!! 问题起源: 我在stm32控制LCD时,出现了如下问题 报错提示: 红框中 xxx.o 对应的 xxx.c 文件为报错的文件,绿 ...
- 解决..\OBJ\IIC.axf: Error: L6218E: Undefined symbol ADC_Cmd (referred from adc.o).问题
出现此问题的原因是没有导入stm32f10x_adc.c文件(此文件路径无法找到) 将其导入后,重新rebuild成功 出了ADC其它相关错误也是如此.
- MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法
本文参考此贴写成,原帖链接 http://blog.csdn.net/yx_l128125/article/details/9231385 在使用MDK编译工程时出现了如下错误,test.axf: E ...
- 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法
问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题 1 . 尝试解决但是没有成功的办法: 1.1 头文件包含问题 一开始以为是没有包含头文件,将头文件包含后,再次 ...
- (已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o).
今天在学习搭建固件库时遇到了一个问题,32在编译的时候会报Error: L6218E: Undefined symbol assert_param (referred from misc.o).的错误 ...
- 解决Error L6218E Undefined symbol XXX....问题
分享一个keil的错误编译提示以及其问题解决方法,当我们碰到"Error L6218E Undefined symbol XXX-"这个错误提示,其实出现这问题的原因就是我们调用了 ...
- STM32编译报错 Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).——解决办法
入门STM32写第一个程序时,引入启动文件startup_stm32f10x_hd.s后编译报错 [注]启动文件自行下载后加入工程中 一.原因 引入的启动文件startup_stm32f10x_hd. ...
- stm32结合TFLCD编程遇到的问题之.\Objects\EXTI_Project.axf: Error: L6218E: Undefined symbol POINT_COLOR (referre
在TFLCD屏幕中遇到的问题及解决方案 1.问题提出 在对正点原子提供的有关TFLCD屏幕做移植过程中,编译过程中没有报错,但是链接时就出现了报错,报错信息如下图所示: 像这种错误,无法定义到错误所在 ...
最新文章
- c++清空串口缓冲区
- leetcode面试题 02.08. 环路检测
- django model中的DateField()转为时间戳
- ListView乱谈之ListView的布局
- Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新)
- JVM之类的加载与类加载器
- cas5.2集成ldap
- 互联网数据响应时间计算公式
- cs5460a c语言程序,cs5460a应用电路(含源程序)
- 演示固态硬盘装win11系统教程
- Unity3d开发“类三消”游戏
- 映客卖身、花椒获资、抖音崛起——直播和短视频现状分析
- 《投射技术》与科学研究汉字笔迹心理学的希望
- 商品销售数据建模及分析
- 固态硬盘坏了怎么恢复数据恢复
- 剑指 Offer 12. 矩阵中的路径
- html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)...
- BIhuman商业智能和数据仓库高
- css如何去掉或修改浏览器默认滚动条
- java有哪些特点?
热门文章
- Word文件设置了只读模式如何编辑?
- python k折交叉验证_机器学习之K折交叉验证
- 《看板和Scrum——相得益彰》读书笔记(四)
- After Effects Guru: Character Animator After Effects 大师教程之角色动画 Lynda课程中文字幕
- 清华大学计算机系张晨毕业院校,张晨-清华大学工业工程系
- T20天正建筑2019中文版
- android Sim卡锁定 pin解锁流程学习
- OPPOa8计算机怎么变成科学,科技教程:oppoa8怎么使用语音助手
- 信息与计算机科学是学什么的,信息与计算科学:你猜我是学计算?还是计算机?...
- 2018狗年,半年报