トリガとしての外部イベント
このセクションでは、物理ボタンなどからの外部イベントを、TouchGFX Designerでトリガとして使用する方法について説明します。
物理ボタンなど、ペリフェラルからの入力にアプリケーションが応答するための要件として、マイクロコントローラ上のGPIOピンが基板の回路図に従って構成されている必要があります。
この例では、H7B3I-DKを使用して、物理ボタンの押下にUIを反応させる方法を示します。 この例ではポーリングを使用しますが、EXTIを代わりに使用することもできます。
回路図は次のサイトからダウンロードできます: st.com
Tip
ボード立ち上げ
次の図はSTM32H7B3I-DKボードの回路図の一部を示しており、それ以降の例では、STM32CubeMXを使用して、ボタンの状態を読み取るために入力として適切なGPIOポートとピンを設定しています。
STM32H7B3I-DK TouchGFXボードの設定に基づいて、新しいアプリケーションを開始します。 この図では、ユーザ・ボタン(User Button)がGPIOポートCのピン13(PC13)に接続されています。
STM32CubeMXで、PC13を入力として設定し、System CoreカテゴリのGPIOセクションでプルダウンに設定できます。
以下のコードは、ピン配置ビュー(Pinout View)で指定された名前に基づいて、STM32CubeMXによって生成されたものです。
#define MCU_ACTIVE_GPIO_Port GPIOI
#define VSYNC_FREQ_Pin GPIO_PIN_12
#define VSYNC_FREQ_GPIO_Port GPIOA
#define BTN_USER_Pin GPIO_PIN_13
#define BTN_USER_GPIO_Port GPIOC
#define LED2_Pin GPIO_PIN_2
#define LED2_GPIO_Port GPIOG
#define LCD_INT_Pin GPIO_PIN_2
static void MX_GPIO_Init(void)
__HAL_RCC_GPIOJ_CLK_ENABLE();
__HAL_RCC_GPIOI_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
...
/*Configure GPIO pin : BTN_USER_Pin */
GPIO_InitStruct.Pin = BTN_USER_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(BTN_USER_GPIO_Port, &GPIO_InitStruct);
}
TouchGFX HALの開発
TouchGFXエンジンのレンダリング・サイクルの一部は、可能な入力をチェックするためのものです。
入力状態を読み取ったら(外部イベント)、TouchGFX HALはButtonControllerインタフェースを介して、このイベントをレンダリング・サイクルの一部として読み取ることができます。
#include <platform/driver/button/ButtonController.hpp>
class H7B3ButtonController : public touchgfx::ButtonController
{
virtual void init() { }
virtual bool sample(uint8_t& key)
{
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) != GPIO_PIN_RESET)
{
key = 1;
return true;
}
return false;
}
private:
};
...
H7B3ButtonController bc;
void touchgfx_init()
{
...
hal.initialize();
hal.setButtonController(&bc);
}
TouchGFX Designer
TouchGFX DesignerからのインタラクションでButtonController
によってサンプリングされた値を使用するには、.touchgfx
プロジェクト・ファイル内に名前と値のマッピングを作成する必要があります。
"PhysicalButtons": [],
"PhysicalButtons": [
{
"Key": 1,
"Name": "BTN_USER"
}
],
これで、インタラクションの作成時に"Hardware Button is clicked"をトリガとして使用できるようになります。 .touchgfxファイルで定義された"Key"と"Name"のペアを選択すると、"Change screen"などのアクションを指定することができます。
ターゲット上で実行
Designerで"Generate code"を押すと、STM32CubeIDEプロジェクトが開くので、デバッグ設定を行います。