Hlcisy653 2024-10-15 15:01 采纳率: 0%
浏览 1498
已结题

keil5编译找不到.h文件该如何解决

问题遇到的现象和发生背景

求问各位,我换了一台电脑,重新下载了stm32cubemx和keil5,使用时发现当我新建一个工程生成程序到keil时,代码编译运行没有问题,但是烧录后发现显示烧录成功而板子上程序并没有运行,重启板子也不行。然后发现只要我从cube中再次GENERATE CODE后,keil编译立马就找不到stm32f4xx_hal.h文件了。明明在魔术棒的C/C++选项里看文件路径都是对的,但是程序就是找不到这个.h文件。当我在path里面手动添加该文件的Inc文件夹到路径里后,显示编译成功,但是再次GENERATE CODE后仍旧找不到,显示编译错误。

img

img

操作环境、软件版本等信息

使用的stm32cube版本是6.11.1,keil为keil5MDK5.37

尝试过的解决方法

自己尝试了重装其他版本的cubemx和keil(原先的电脑安装的就是6.11.1的cube,keil的版本不太清楚了)都没有解决问题,只有上面的手动添加路径有一点用但是本质问题还是没解决,而且有一些可编辑.h文件变成了只读,很影响程序使用。

img

我想要达到的结果

希望有这朋友帮我看一下,有没有方法解决这个问题,谢谢了

######更新一下问题:
使用f4系列的芯片时,每一次从cubemx生成程序后编译都会丢失stm32f4xx_hal.h文件,我必须手动把这个文件的路径添加进去才能运行,但是这个路径其实就有,但是keil编译就是找不到。使用f1系列的芯片时,这个方法就失效了,不管怎样手动添加路径,keil就似乎找不到stm32f1xx_hal.h了,基本等于一次性程序了,很迷,根本找不到原因。

  • 写回答

21条回答 默认 最新

  • 阿齐Archie 优质创作者: 嵌入式与硬件开发技术领域 2024-10-15 15:19
    关注

    以下参考免费微信小程序:皆我百晓生 作答,并由阿齐Archie整理回复,若还有疑问可评论或留言。

    根据您提供的信息,您在Keil MDK-ARM中遇到的问题是无法找到stm32f4xx_hal.h文件,这通常是由于路径设置不正确或者文件缺失导致的。以下是一些解决步骤,您可以尝试按照这些步骤来解决问题:

    1. 确认文件路径: 确保stm32f4xx_hal.h文件确实存在于您提供的路径下。根据错误信息,文件应该在以下路径:

      C:/Users/Huang Shiping/STM32Cube/Repository/STM32Cube_FW_F4_V1.28.1/Drivers/STM32F4xx_HAL_Driver/Inc/
      

      请检查该路径下是否存在该文件。

    2. 检查文件名: 确保文件名的大小写正确。在您的代码中,您使用了stm32f4xx_hal.h,但是在错误信息中,文件名有时被写成了stm32f4xx hal.h(有空格)。请确保文件名和代码中的引用完全一致。

    3. 重新配置项目: 在Keil中,您需要确保项目配置正确地包含了HAL库的路径。请按照以下步骤操作:

      • 打开Keil项目。
      • 选择“Project”菜单,然后选择“Options for Target...”。
      • 在弹出的窗口中,选择“C/C++”标签页。
      • 在“Preprocessor”部分,确保“Additional include directories”包含了HAL库的路径,例如:
        $PROJ_DIR$\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc
        
      • 确认无误后,点击“OK”保存设置。
    4. 清除并重新生成项目

      • 在Keil中,选择“Project”菜单,然后选择“Clean Target”。
      • 之后,选择“Rebuild Target”来重新生成项目。
    5. 检查文件只读属性: 您提到有些文件变成了只读,这可能会影响编译过程。请确保所有需要编译的源文件都是可写的。

    6. 重新安装HAL库: 如果上述步骤都不起作用,您可以尝试重新下载并安装STM32CubeMX和HAL库,确保所有文件都是最新的,并且没有损坏。

    7. 检查Keil版本: 确保您使用的Keil MDK-ARM版本与STM32CubeMX生成的代码兼容。有时候,新版本的软件可能不完全兼容旧版本的代码。

    8. 查看Keil的输出窗口: 编译时,Keil的输出窗口会显示详细的编译信息。仔细查看这些信息,可能会提供更多关于问题原因的线索。

    如果以上步骤都无法解决问题,您可能需要联系ST的技术支持或者在相关论坛发帖求助,因为可能存在更深层次的兼容性问题或者其他未知的错误。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月22日
  • 修改了问题 10月15日
  • 创建了问题 10月15日