產生程式碼
本節說明在STM32CubeMX產生程式碼時,TouchGFX Generator的輸出內容。
產生的專案
除了與TouchGFX配套組合的GCC編譯器,以及在TouchGFX Designer中按下run target (執行目標)時所使用的部分,在STM32CubeMX中按下Generate Code (產生程式碼)按鈕以產生程式碼時,TouchGFX也(至少)可搭配使用下列IDE:
- EWARM
- MDK-ARM
- STM32CubeIDE
為了達到最佳專案結構,請導覽至Project Manager(專案管理員),並選擇下列選項用於產生專案:
- 應用程式結構:Advanced (進階)
- 停用Generate under root (在根目錄下產生)(僅限STM32CubeIDE)
按下Generate code(產生程式碼)按鈕之後,STM32CubeMX將針對選取的中介軟體、公用程式、驅動程式及工具鏈等項目產生程式碼。
STM32CubeMX也將會在專案資料夾的根目錄產生TouchGFX資料夾,並建立下列結構:
- App(應用程式)資料夾包含程式碼,用於初始化及啟動TouchGFX。
- Target(目標)資料夾包含唯讀的產生程式碼(位於generated/內部)及可修改的使用者類別(
STM32TouchController.cpp
、TouchGFXGPIO.cpp
及TouchGFXHAL.cpp
)。 - .part檔案是以TouchGFX Designer開啟,用於建立完整的TouchGFX專案,其中包含TouchGFX標頭檔案及程式庫。 Part檔案包含相關的應用程式資訊,例如像素格式,以及TouchGFX Designer產生TouchGFX應用程式程式碼時所使用的畫布尺寸。
透過STM32CubeMX產生程式碼之後,TouchGFX專案就可透過TouchGFX Designer開啟,以便在其中開發UI。 TouchGFX Designer會自動將任何額外產生的程式碼檔案,加入為STM32CubeMX目前專案所選取的目標IDE專案之中。
Further reading
產生程式碼的結構
有些檔案一定會在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.ioc | STM32CubeMX專案檔案 |
Core | main.c 及啟動程式碼 |
Drivers | CMSIS、MCU系列驅動程式及開發板支援套件(BSP) |
EWARM | IDE專案資料夾。 可能是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主迴圈的函數。 其他設定可於可編輯的使用者類別中進行。