玄奕子 2024-07-04 18:47 采纳率: 50%
浏览 51
已结题

移植CubeMX直接生成的工程产生了这种报错 identifier "UART_HandleTypeDef" is undefined

碰到一个奇怪的问题,使用CubeMX直接生成的的工程(路径纯英文),如果一开始在CubeMX中配置了USART和TIM定时器,哪怕在工程中将CubeMX生成的代码全部注释,自己新建点C文件,将生成的代码全部移植到自建的文件中也能正常编译,但如果一开始不在CubeMX中配置USART和TIM定时器,哪怕用的是刚刚的自建文件,一字不改,编译器还是会报错

img

error: #20: identifier "UART_HandleTypeDef" is undefined
error: #20: identifier "TIM_HandleTypeDef" is undefined

都是如上面这种函数句柄未定义的情况,但这些显示未定义的全是HAL库文件中的东西,我在自建文件中都直接添加了#include "stm32g4xx_hal.h",但编译器还显示报错,目前猜测可能是不使用CubeMX配置会缺少了一些东西,例如启动文件之类的

我后来每个自建文件都添加了#include "stm32g4xx_hal.h"(只不过我提问的图片上没有更新),"C/C++ Tab"下"Include Paths"路径也都检查了,C文件也都包含了,但就是不行,我感觉应该是缺少了什么文件,但就是找不到,佬们能帮我分析一下是什么原因吗

将串口,定时器的相关文件全部注释和不引用后,报错消失

img

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-04 18:47
    关注

    引自免费微信小程序:皆我百晓生

    你的问题确实比较复杂,我会尝试分析并给出可能的解决方案。从问题描述来看,错误提示是关于 "UART_HandleTypeDef" 和 "TIM_HandleTypeDef" 未定义的问题。这两个类型定义都在 HAL 库中,通常在你包含 "stm32g4xx_hal.h" 后应该能够被正确识别。但是根据你的描述,即使包含了该头文件,编译器还是提示未定义。

    这个问题的可能原因包括:

    1. 你的 HAL 库版本与你的 STM32 固件版本不匹配。请确认你的 HAL 库和固件库版本是否匹配,并且是否适用于你的 STM32G4xx 系列微控制器。
    2. 你的项目可能没有正确配置以包含 HAL 库文件。在 Keil 中,你需要检查项目的配置,确保库文件的路径已经添加到 "Include Paths" 和 "Library Paths"。另外,确认在项目中正确地链接了 HAL 库。
    3. 如果你的代码是基于 CubeMX 生成的代码进行移植的,那么可能 CubeMX 在生成代码时使用了特定的配置(例如 USART 和 TIM),这些配置在 HAL 库中有一些初始化和配置函数依赖于这些配置。如果你在移植代码时没有包含这些配置(即使你在代码中手动注释掉了这些配置),可能会导致编译器找不到这些类型的定义。尝试重新使用 CubeMX 生成代码并确认包含了所有必要的配置。

    为了解决这个问题,你可以尝试以下步骤:

    1. 检查并确认你的 HAL 库和固件库版本匹配,并且适用于你的 STM32G4xx 系列微控制器。
    2. 检查你的项目配置,确保库文件的路径已经添加到 "Include Paths" 和 "Library Paths",并且正确链接了 HAL 库。
    3. 如果可能的话,尝试重新使用 CubeMX 生成代码并确认包含了所有必要的配置(例如 USART 和 TIM)。然后尝试编译代码看是否还会出现错误。

    如果以上步骤无法解决问题,我建议你尝试在一个全新的项目中直接使用 CubeMX 生成代码(包括 USART 和 TIM 配置),看看是否能正常编译和运行。然后你可以逐步将你的代码加入到这个项目中,并测试每次添加后的编译结果,这样可以帮助你定位问题所在。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 创建了问题 7月4日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数