跳转到主要内容

生成代码

This section describes what the TouchGFX Generator outputs when generating code in STM32CubeMX.

生成的项目

除了与TouchGFX捆绑并在TouchGFX 设计器中按下运行目标时使用的GCC编译器之外,当使用STM32CubeMX中的Generate Code按钮生成代码时,TouchGFX(至少)还与以下ide一起工作:

  1. EWARM
  2. MDK-ARM
  3. STM32CubeIDE

For optimal project structure, navigate to Project Manager and select the following options for project generation:

  • 应用结构:高级
  • 禁用在root下生成(仅限STM32CubeIDE)

选择“高级应用结构”,然后取消选择“在root下生成”

After pressing the Generate code button, STM32CubeMX will generate some code for the selected middlewares, utilities, drivers, toolchain etc.

STM32CubeMX还将在项目文件夹的根目录下生成一个TouchGFX文件夹,其结构如下:

TouchGFX文件夹结构

  • The App folder contains code to initialize and start TouchGFX.
  • The target folder contains read-only generated code (inside generated/) and modifiable user classes (STM32TouchController.cpp, TouchGFXGPIO.cpp and TouchGFXHAL.cpp).
  • The .part file is opened with TouchGFX Designer in order to create a complete TouchGFX project with TouchGFX header files and libraries. The part file contains relevant application information such as pixel format and canvas dimensions that TouchGFX Designer uses when generating TouchGFX application code.

Once the code is generated through STM32CubeMX, the TouchGFX project can be opened with TouchGFX Designer in order to develop the UI. TouchGFX Designer automatically adds any additional generated code files to the target IDE project that is selected for the current project in STM32CubeMX.

Further reading
有关使用TouchGFX Designer进行UI开发的详细信息,请参见UI开发部分。

生成的代码架构

不论TouchGFX Generator中进行了什么配置,一些文件始终在TouchGFX文件夹中生成,而另一些文件仅在启用/禁用某些功能时生成(例如,视频解码器或自定义DMA2D类)。 The contents of the generated files are updated whenever developer generate code in STM32CubeMX, to reflect changes made in TouchGFX Generator AL configurations.

以下列表概述了启用TouchGFX Generator的STM32CubeMX项目内容,重点介绍了始终生成的TouchGFX相关文件。

TouchGFX文件夹
│   .mxproject
│ myproject.ioc
├───Core
├───Drivers
├───EWARM
├───Middlewares
└───TouchGFX
│ ApplicationTemplate.touchgfx.part
├───App
│ app_touchgfx.c
│ app_touchgfx.h
└───target
│ STM32TouchController.cpp
│ STM32TouchController.hpp
│ TouchGFXGPIO.cpp
│ TouchGFXHAL.cpp
│ TouchGFXHAL.hpp

└───generated
OSWrappers.cpp
TouchGFXConfiguration.cpp
TouchGFXGeneratedHAL.cpp
TouchGFXGeneratedHAL.hpp

下表列出了最重要条目的功能。

文件夹职责
myproject.iocSTM32CubeMX项目文件
内核main.c和启动代码
驱动CMSIS、MCU系列驱动程序和Board Support Packages(板支持包)(BSP)
EWARMIDE项目文件夹。 可以为EWARM、MDK-ARM或STM32CubeIDE
中间件包含TouchGFX库/头文件以及FreeRTOS等第三方软件。
ApplicationTemplate.touchgfx.partSTM32CubeMX使用与TouchGFX Designer项目相关的信息(如屏幕尺寸和位深)来更新.part文件
应用STM32CubeMX的X-CUBE接口。 app_touchgfx.c包含MX_TouchGFX_Process(void)MX_TouchGFX_Init(void)函数的定义,这些函数用于初始化TouchGFX和启动其主循环。
目标/生成该子文件夹包含只读文件,当配置更改时,这些文件会被STM32CubeMX覆盖。 TouchGFXGeneratedHAL.cpp是TouchGFX类HAL的子类,并包含STM32CubeMX可基于其当前配置生成的代码。 OSWrappers.cpp(OSAL)包含与TouchGFX 引擎同步所需的功能,最后是TouchGFXConfiguration.cpp,其中包含用于构建和配置TouchGFX的代码,包括HAL。
目标包含大量文件,用户可修改这些文件,以扩展HAL行为,或覆盖STM32CubeMX生成的配置。 STM32TouchController.cpp包含空触摸控制器接口。 TouchGFXHAL.cpp定义TouchGFXGeneratedHAL的子类TouchGFXHAL

需要注意的是,TouchGFXConfiguration.cpp包含一个用于构建HAL的函数以及一个用于启动TouchGFX主循环的函数。 可在可编辑的用户类中完成其他配置。

Further reading
请阅读“修改生成的行为”部分,了解如何在可编辑用户类中应用其他配置。