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

这篇具有很好参考价值的文章主要介绍了关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题

关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法,stm32 /hal库函数,stm32,单片机,嵌入式硬件

1 . 尝试解决但是没有成功的办法:

1.1 头文件包含问题

一开始以为是没有包含头文件,将头文件包含后,再次进行编译仍然不能解决。并且在进行源文件跳转时出现下面的问题:
关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法,stm32 /hal库函数,stm32,单片机,嵌入式硬件
去源文件进行查看,确实存在该函数,但是就是不能跳转回去,检查函数名拼写后无果。所以尝试另外的解决办法。

1.2 C和C++混用问题

参考https://blog.csdn.net/zhizuwei/article/details/86017618 这篇文章进行修改,但是整个工程中几乎没有用到C++进行文件的编写,因此也不能解决。所以又要尝试另外的解决办法。

2 .成功解决的办法:

在源文件"stm32f1xx_hal_tim.h"查找HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)这个函数时,发现想查看它的函数定义仍然无法跳转,因此想到他的函数定义是不是被注释掉了,而在官方库里被注释的情况大概率是因为用到了条件编译。可能是移植的时候没有把某些需要的条件打开,导致函数无法跳转。按照这个思路,在整个工程里进行HAL_TIM_Base_Init函数的定义的查找,发现果然是因为条件编译被注释掉了
关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法,stm32 /hal库函数,stm32,单片机,嵌入式硬件
这个条件没有被打开
关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法,stm32 /hal库函数,stm32,单片机,嵌入式硬件

找到这个条件定义的头文件“stm32f1xx_hal_conf.h”把注释打开
关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法,stm32 /hal库函数,stm32,单片机,嵌入式硬件
再次进行编译问题解决。

总结:

在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 这个报错出现的原因有很多种,但是本文提到了三种。本人遇到的问题解决的办法相对少见一些,如果按照cubemx的方式直接进行该程序的配置,可能会避免这种问题的产生。文章来源地址https://www.toymoban.com/news/detail-634315.html

到了这里,关于关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32HAL库常用库函数说明

    函数原型: 参数 说明 Delay 延时时间 数据类型:unsigned int 32位 返回值 无返回值 函数原型: 参数 说明 *GPIOx 引脚选泽,参数范围:GPIOA~GPIOC等 GPIO_Pin 引脚编号选择,参数范围:GPIO_PIN_0~GPIO_PIN_15等 PinState 引脚状态设置,参数范围:GPIO_PIN_SET:高电平 GPIO_PIN_RESET:低电平 返回值

    2023年04月08日
    浏览(35)
  • Keil写STM32程序.axf: Error: L6218E: Undefined symbol HAL_RTC_Init (referred from rtc.o)报错解决办法

    在写RTC的程序时,报如下的错误:....Outputatk_f103.axf: Error: L6218E: Undefined symbol HAL_RTC_Init (referred from rtc.o) 显示没有定义 网上有很多解决办法,这里提供一种思路 就是可能是由于没有添加相应的驱动文件,所以需要添加相应的stm32的驱动文件到工程中 点击添加文件,我的是

    2024年02月06日
    浏览(48)
  • 关于STM32 hal printf重定向 “FILE“ is undefined

    关于STM32 hal printf重定向,及报错。“FILE” is undefined 增加以下内容:

    2024年02月13日
    浏览(44)
  • STM32 HAL库函数——HAL_UART_RxCpltCallback()详解

    HAL_UART_RxCpltCallback 是一个回调函数,用于在使用 HAL 库进行串口接收时处理接收完成事件。当使用 HAL_UART_Receive_IT 函数启动串口接收并且接收到指定数量的数据后,HAL 库会自动调用 HAL_UART_RxCpltCallback 函数。 回调函数是一种特殊的函数,它在特定事件发生时由系统或库调用,

    2024年02月13日
    浏览(39)
  • STM32L0 ADC使用HAL库关于校准问题的说明

    最近是有一个产品用到了ADC,使用的是STM32L051 芯片,使用 STM32CubeMX 生成的代码,本来以为简简单单,但是在调用 HAL ADC校准函数的时候遇到一个问题有点疑问,度娘一下也没有找到解答,还是经过翻阅了一些资料才得到答案,特此来记录一下。 我是矜辰所致,全网同名,尽

    2024年02月02日
    浏览(51)
  • STM32 HAL库常用函数(早期学习备份版)

    目录 GPIO  读取电平  电平设置 翻转IO口电平 NVIC  中断回调函数  switch选择中断线 定时器中断回调函数 UART中断回调函数 Timers 定时器开关函数 开启定时器及中断 关闭定时器及中断 开启定时器 关闭定时器 PWM开启定时器 PWM关闭定时器 读写定时器相关值的函数 设置比较值 获

    2024年02月21日
    浏览(41)
  • STM32cubeIDE HAL库中断服务函数解读

    以stm32f103为例 在开启一个中断后,首先会在stm32f1xx_it.c找到自动生成的中断处理函数,这里是TIM1产生的定时器中断:  这个函数又调用了 stm32f1xx_hal_tim.c 中的 HAL_TIM_IRQHandler(htim1),这个htim1是通用定时器的结构体,其定义为 这个结构体的意义可以参考第25章 STM32F429的TIM定时器

    2024年02月02日
    浏览(68)
  • STM32 HAL库的串口中断服务函数详解

    最近在实现利用上位机通过串口发送指令给下位机执行操作的实验,在之前学习串口的过程中我就一直有一个疑惑,那就是为什么在串口中断回调函数内除了要加上自己的操作以外还要在末尾再执行一次 接收中断 ,在查阅了一些资料后我才发现原来和 中断服务函数 有关 我

    2024年02月10日
    浏览(43)
  • STM32的HAL库开发各函数意义、笔记

    快速查阅相关函数,请从目录查找 在STM32F103中, GPIOB-BSRR |= GPIO_PIN_7  的作用是将GPIOB的第7位引脚设置为高电平(将引脚置1),而 GPIOB-BRR |= GPIO_PIN_7  的作用是将GPIOB的第7位引脚设置为低电平(将引脚置0)。下面是对这两个语句的详细说明: GPIOB-BSRR |= GPIO_PIN_7 : GPIOB 是ST

    2024年02月05日
    浏览(45)
  • STM32_HAL库串口接收相关函数分析

    串口接收的程序整体分为三个部分:初始化部分,开启中断部分,中断函数部分: 初始化部分: 该部分主要完成相关引脚的初始化,串口的初始化(设置波特率,校验位,字长等),为了逻辑清晰,把初始化相关代码放在本文的最后。 开启中断部分: 调用HAL_UART_Receive_IT函数

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包