ST意法半导体
直播中

费加罗

9年用户 898经验值
私信 关注
[问答]

STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?

我是用STM32 touch 4.24.2 生成了一个 驱动STM32F469-disco的底层驱动,代码编译不过去?提示缺少文件,或者是打不开文件,但是我已经添加了文件?如下图所示:


大家有人遇到过类似的问题吗?这个touch gfx 软件生成的底层驱动代码?在生产时候需要特别主义的地方吗?

回帖(1)

淡淡的爱

2025-6-16 17:46:32

针对使用STM32 TouchGFX 4.24.2生成代码后Keil编译失败的问题(提示文件缺失或无法打开),以下是系统化的解决方案和注意事项:




一、核心解决步骤


1. 检查文件是否实际存在



  • 在文件资源管理器中导航到错误提示中的路径(如 DriversBSPSTM32469I-Discovery)。

  • 确认缺失的 .c/.h 文件(如 stm32469i_discovery_ts.c)是否存在于目录中。

  • 若文件缺失

    • 从TouchGFX安装目录的模板文件夹中手动复制(路径示例:C:TouchGFX4.24.2platformstm32f7xxSTM32F469-DISCODriversBSP)。

    • 或从官方固件库重获(STM32CubeF4固件包)。



2. 验证Keil工程文件路径



  • 添加文件到工程

    • 右键Keil工程中对应的组(如 Application/User/BSP)→ 选择 Add Existing Files... → 添加缺失的文件。


  • 配置包含路径

    • 打开 Options for Target → C/C++ → Include Paths

    • 添加所有相关路径(需绝对路径或相对工程根目录的路径):
      Drivers/BSP/STM32469I-Discovery
      Drivers/BSP/Components/Common
      Drivers/BSP/Components/触摸芯片型号(如ft6x06)



3. 检查CubeMX配置依赖



  • TouchGFX代码生成依赖于CubeMX的硬件配置。如果未正确配置触摸芯片:

    • 打开CubeMX工程(*.ioc 文件)。

    • TouchGFXMiddleware 部分启用触摸屏(如FT6336)。

    • 重新生成CubeMX代码,然后重新生成TouchGFX代码(备份用户代码)。



4. 验证固件库版本兼容性



  • TouchGFX 4.24.2需要特定版本的STM32CubeF4固件(如v1.27.1)。

  • 解决方案

    1. 下载正确版本的固件包(查看TouchGFX发布说明)。

    2. 替换工程中 Drivers 文件夹下的全部内容。



5. 处理文件被忽略的情况



  • 在Keil中右键文件 → 选择 Options → 检查 Exclude from build 是否被勾选 → 取消勾选。




二、关键注意事项(避免重复出错)


1. TouchGFX代码生成关键点



  • 硬件配置:在CubeMX中必须启用LTDC、SDRAM、触摸接口(I2C/SPI)和TouchGFX中间件。

  • TouchGFX激活:使用许可证激活TouchGFX Designer(未激活可能导致代码不完整)。

  • 目标板选择:在TouchGFX Designer中确认开发板型号为 STM32F469-DISCO


2. 生成后检查清单



























路径 必须存在的文件 作用
Drivers/BSP/STM32469I-Discovery stm32469i_discovery_ts.c/h 触摸屏驱动
Drivers/BSP/Components/ft6x06 ft6x06.c/h 触摸IC驱动
Middlewares/ST/TouchGFX touchgfx_hal.cpp TouchGFX硬件抽象层

3. 编译环境配置



  • 宏定义:在Keil中设置全局宏:
     STM32F469xx,USE_HAL_DRIVER,USE_STM32469I_DISCO

  • 启动文件:确认启动文件(如 startup_stm32f469xx.s)存在于工程中。




三、补充建议



  1. 清理并重建工程

    • 执行 Project → Clean targets → 重新编译。


  2. 查看TouchGFX日志

    • 检查TouchGFX生成日志(touchgfx.log),确认是否有文件生成失败的警告。


  3. 使用官方示例验证

    • 下载STM32CubeF4中的TouchGFX示例工程(路径:STM32Cube_FW_F4_VxxProjectsSTM32469I-DiscoveryApplicationsTouchGFX),对比文件结构和设置。





四、最终验证


完成上述步骤后编译工程,若仍报错,按以下流程排查:


graph TD
  A[编译失败] --> B{错误类型}
  B --文件缺失--> C[检查文件是否存在并添加路径]
  B --未定义符号--> D[检查宏定义和固件库版本]
  C --> E[重新生成CubeMX+TouchGFX代码]
  D --> F[替换Drivers为兼容版本]
  E --> G[重新编译]
  F --> G
  G --> H{成功?}
  H --是--> I[完成]
  H --否--> J[检查TouchGFX激活状态]

通过系统化解决路径配置、库依赖和硬件配置问题,可彻底解决TouchGFX生成的Keil工程编译问题。如遇到特定编译错误,建议在ST社区提问并提供详细错误日志(ST社区入口)。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分