コードの生成
このセクションでは、STM32CubeMXでコードを生成するときのTouchGFX Generatorの出力内容について説明します。
生成されるプロジェクト
TouchGFXにバンドルされており、TouchGFX Designerでrun targetが押されたときに使用されるGCCコンパイラ以外に、STM32CubeMXで[Generate Code]ボタンを使用してコードを生成するときには、TouchGFXは(少なくとも)次に示すIDEとともに動作します。
- EWARM
- MDK-ARM
- STM32CubeIDE
最適なプロジェクト構造にするには、[Project Manager]に移動して、プロジェクト生成に関する次のオプションを選択します。
- [Application structure]:[Advanced]
- [Generate under root]無効化(STM32CubeIDEのみ)
[Generate code]ボタンを押すと、STM32CubeMXは選択されたミドルウェア、ユーティリティ、ドライバ、ツールチェーンなどに対する何らかのコードを生成します。
STM32CubeMXはプロジェクト・フォルダのルートに、以下の構造を持つTouchGFXフォルダも生成します。
- Appフォルダには、TouchGFXを初期化し、起動するコードが含まれています。
- targetフォルダには、読出し専用の生成済みコード(generated/の内)と、変更可能なユーザ・クラス(
STM32TouchController.cpp
、TouchGFXGPIO.cpp
、TouchGFXHAL.cpp
)が含まれています。 - .partファイルは、TouchGFXヘッダ・ファイルとライブラリを備えた完全なTouchGFXプロジェクトを作成するために、TouchGFX Designerを使用して開かれます。 partファイルにはピクセル・フォーマットやTouchGFX DesignerがTouchGFXアプリケーション・コードを生成するときに使用するキャンバスのサイズなどの関連するアプリケーション情報が含まれています。
STM32CubeMXを介してコードを生成すると、UIを開発するためにTouchGFX DesignerからTouchGFXプロジェクトを開くことができるようになります。 TouchGFX Designerは、追加生成されたコードのファイルを、STM32CubeMXで現在のプロジェクト用に選択されたターゲットのIDEプロジェクトに自動的に追加します。
Further reading
生成されるコードの構造
TouchGFX Generatorでの設定に関係なく、一部のファイルはTouchGFXフォルダ内に常に生成され、それ以外は特定の機能が有効または無効になった場合のみ生成されます(ビデオ・デコーダやカスタムDMA2Dクラスなど)。 生成されたファイルのコンテンツは、開発者がSTM32CubeMXでコードを生成すると常に更新され、TouchGFX Generator ALの設定に加えられた変更が反映されます。
次のリストは、TouchGFX Generatorが有効化されたSTM32CubeMXプロジェクトの内容の概要を示しており、常に生成されるTouchGFX関連ファイルが強調されています。
TouchGFX Folder
│ .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、マイクロコントローラ・ファミリのドライバ、ボード・サポート・パッケージ(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のメイン・ループを開始する関数が含まれることを把握しておくことが重要です。 追加設定は、編集可能なユーザクラスにて行うことができます。