目录

  • 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).相关推荐

  1. HAL库 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)的可能原因之一及解决方法

    我在学习STM32 HAL库版本时遇到了这种编译问题 由于是刚开始学习STM32代码跟例程是一样的,所以代码不可能出错.我去网上寻找答案看到了 (7条消息) (已解决)STM32报错Error: L6 ...

  2. *.axf: Error: L6218E: Undefined symbol xxx(xxx.o)问题解决与inline函数的声明

    可能每个人错误原因有所不同吧,我在网上看了很多方法,有些不那么靠谱!! 问题起源: 我在stm32控制LCD时,出现了如下问题 报错提示: 红框中 xxx.o 对应的 xxx.c 文件为报错的文件,绿 ...

  3. 解决..\OBJ\IIC.axf: Error: L6218E: Undefined symbol ADC_Cmd (referred from adc.o).问题

    出现此问题的原因是没有导入stm32f10x_adc.c文件(此文件路径无法找到) 将其导入后,重新rebuild成功 出了ADC其它相关错误也是如此.

  4. MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法

    本文参考此贴写成,原帖链接 http://blog.csdn.net/yx_l128125/article/details/9231385 在使用MDK编译工程时出现了如下错误,test.axf: E ...

  5. 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法

    问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题 1 . 尝试解决但是没有成功的办法: 1.1 头文件包含问题 一开始以为是没有包含头文件,将头文件包含后,再次 ...

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

    今天在学习搭建固件库时遇到了一个问题,32在编译的时候会报Error: L6218E: Undefined symbol assert_param (referred from misc.o).的错误 ...

  7. 解决Error L6218E Undefined symbol XXX....问题

    分享一个keil的错误编译提示以及其问题解决方法,当我们碰到"Error L6218E Undefined symbol XXX-"这个错误提示,其实出现这问题的原因就是我们调用了 ...

  8. STM32编译报错 Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).——解决办法

    入门STM32写第一个程序时,引入启动文件startup_stm32f10x_hd.s后编译报错 [注]启动文件自行下载后加入工程中 一.原因 引入的启动文件startup_stm32f10x_hd. ...

  9. stm32结合TFLCD编程遇到的问题之.\Objects\EXTI_Project.axf: Error: L6218E: Undefined symbol POINT_COLOR (referre

    在TFLCD屏幕中遇到的问题及解决方案 1.问题提出 在对正点原子提供的有关TFLCD屏幕做移植过程中,编译过程中没有报错,但是链接时就出现了报错,报错信息如下图所示: 像这种错误,无法定义到错误所在 ...

最新文章

  1. c++清空串口缓冲区
  2. leetcode面试题 02.08. 环路检测
  3. django model中的DateField()转为时间戳
  4. ListView乱谈之ListView的布局
  5. Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新)
  6. JVM之类的加载与类加载器
  7. cas5.2集成ldap
  8. 互联网数据响应时间计算公式
  9. cs5460a c语言程序,cs5460a应用电路(含源程序)
  10. 演示固态硬盘装win11系统教程
  11. Unity3d开发“类三消”游戏
  12. 映客卖身、花椒获资、抖音崛起——直播和短视频现状分析
  13. 《投射技术》与科学研究汉字笔迹心理学的希望
  14. 商品销售数据建模及分析
  15. 固态硬盘坏了怎么恢复数据恢复
  16. 剑指 Offer 12. 矩阵中的路径
  17. html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)...
  18. BIhuman商业智能和数据仓库高
  19. css如何去掉或修改浏览器默认滚动条
  20. java有哪些特点?

热门文章

  1. Word文件设置了只读模式如何编辑?
  2. python k折交叉验证_机器学习之K折交叉验证
  3. 《看板和Scrum——相得益彰》读书笔记(四)
  4. After Effects Guru: Character Animator After Effects 大师教程之角色动画 Lynda课程中文字幕
  5. 清华大学计算机系张晨毕业院校,张晨-清华大学工业工程系
  6. T20天正建筑2019中文版
  7. android Sim卡锁定 pin解锁流程学习
  8. OPPOa8计算机怎么变成科学,科技教程:oppoa8怎么使用语音助手
  9. 信息与计算机科学是学什么的,信息与计算科学:你猜我是学计算?还是计算机?...
  10. 2018狗年,半年报