跳转到主要内容

外部事件作为触发器

本节描述如何在TouchGFX Designer中使用外部事件(如物理按钮)作为触发器。

应用程序要响应外设(如物理按钮)输入,需要按照板原理图配置MCU上的GPIO引脚。

在本例中,使用H7B3I-DK展示如何让UI对物理按钮按下事件做出响应。 本例使用轮询,但也可以使用EXTI。

可从以下链接下载原理图:st.com

Tip
如果GPIO引脚可读取,可以在TouchGFX Designer中将其用作事件的触发器。

板卡调试与启动

下图所示为STM32H7B3I-DK板的部分原理图,后面的示例中,使用STM32CubeMX将合适的GPIO端口和引脚配置为输入,用来读取按钮状态。

基于STM32H7B3I-DK开发板的TouchGFX应用程序模板,创建新的应用。 用户按钮连接到GPIO端口C引脚13(PC13)。

在STM32CubeMX中,PC13引脚可配置为输入,并可以在System Core类别的GPIO部分,将其配置为下拉。

下面的代码由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"
}
],

此后,在创建交互时,可以将“硬件按钮被点击”作为触发器使用。 用户可通过选择.touchgfx文件中定义的“键”/“名称”对来指定操作,如“切换屏幕”。

在目标板上运行

在Designer中点击“生成代码”后,打开STM32CubeIDE项目,并设置调试配置。

https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-discovery-kits/stm32h7b3i-dk.html#