跳轉到主要內容

產生程式碼

本節說明在STM32CubeMX產生程式碼時,TouchGFX Generator的輸出內容。

產生的專案

除了與TouchGFX配套組合的GCC編譯器,以及在TouchGFX Designer中按下run target (執行目標)時所使用的部分,在STM32CubeMX中按下Generate Code (產生程式碼)按鈕以產生程式碼時,TouchGFX也(至少)可搭配使用下列IDE:

  1. EWARM
  2. MDK-ARM
  3. STM32CubeIDE

為了達到最佳專案結構,請導覽至Project Manager(專案管理員),並選擇下列選項用於產生專案:

  • 應用程式結構:Advanced (進階)
  • 停用Generate under root (在根目錄下產生)(僅限STM32CubeIDE)

選取「Advanced」(進階)應用程式結構,並取消選取「Generate Under Root」(在根目錄下產生)

按下Generate code(產生程式碼)按鈕之後,STM32CubeMX將針對選取的中介軟體、公用程式、驅動程式及工具鏈等項目產生程式碼。

STM32CubeMX也將會在專案資料夾的根目錄產生TouchGFX資料夾,並建立下列結構:

TouchGFX資料夾結構

  • App(應用程式)資料夾包含程式碼,用於初始化及啟動TouchGFX。
  • Target(目標)資料夾包含唯讀的產生程式碼(位於generated/內部)及可修改的使用者類別(STM32TouchController.cppTouchGFXGPIO.cppTouchGFXHAL.cpp)。
  • .part檔案是以TouchGFX Designer開啟,用於建立完整的TouchGFX專案,其中包含TouchGFX標頭檔案及程式庫。 Part檔案包含相關的應用程式資訊,例如像素格式,以及TouchGFX Designer產生TouchGFX應用程式程式碼時所使用的畫布尺寸。

透過STM32CubeMX產生程式碼之後,TouchGFX專案就可透過TouchGFX Designer開啟,以便在其中開發UI。 TouchGFX Designer會自動將任何額外產生的程式碼檔案,加入為STM32CubeMX目前專案所選取的目標IDE專案之中。

Further reading
更多詳細資訊請參閱UI開發一節,以瞭解使用TouchGFX Designer的UI開發事宜。

產生程式碼的結構

有些檔案一定會在TouchGFX資料夾之中產生,不受TouchGFX Generator設定影響,其他檔案則只會在特定功能啟用/停用的狀態下產生(例如影片解碼器或客製DMA2D類別)。 只要開發人員在STM32CubeMX產生程式碼以反映TouchGFX Generator AL設定所做的變更,產生檔案的內容就會更新。

以下清單概述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專案檔案
Coremain.c及啟動程式碼
DriversCMSIS、MCU系列驅動程式及開發板支援套件(BSP)
EWARMIDE專案資料夾。 可能是EWARM、MDK-ARM或STM32CubeIDE
Middlewares包含TouchGFX程式庫/標頭檔案及FreeRTOS等第三方軟體。
ApplicationTemplate.touchgfx.part.part檔案是由STM32CubeMX以TouchGFX Designer專案相關資訊進行更新,例如螢幕尺寸和位元深度
App為X-CUBE和STM32CubeMX的介面。 app_touchgfx.c包含函數定義MX_TouchGFX_Process(void)MX_TouchGFX_Init(void),用於初始化TouchGFX並啟動其主迴圈。
target/generated此子資料夾包含唯讀檔案,會在設定變更時由STM32CubeMX覆寫。 TouchGFXGeneratedHAL.cpp是TouchGFX類別HAL的子類別,包含STM32CubeMX依據目前設定所產生的程式碼。 OSWrappers.cpp (OSAL)包含與TouchGFX引擎同步所需的函數,最後TouchGFXConfiguration.cpp則包含用於建構及設定TouchGFX(包括HAL)的程式碼。
target包含大量檔案,使用者可修改這些檔案以延伸HAL行為,或覆寫由STM32CubeMX產生的設定。 STM32TouchController.cpp包含空的觸控控制器介面。 TouchGFXHAL.cpp定義了TouchGFXGeneratedHAL的子類別TouchGFXHAL

需要注意的是TouchGFXConfiguration.cpp包含了一個用來建構HAL的函數,以及一個用於啟動TouchGFX主迴圈的函數。 其他設定可於可編輯的使用者類別中進行。

Further reading
請參閱修改所產生的行為一節,以瞭解如何在可編輯的使用者類別套用其他設定。