跳转到主要内容

10. 按钮

动机

Physical buttons can function as external events usable as triggers from TouchGFX Designer during application development, or simply used as events in the application backend.

Note
如果您的开发板无按钮,请跳过此步。

目标

本节的目标是开发可用于后续TouchGFX HAL和/或相关应用开发中的代码。

验证

以下是本节的验证点:

验证点基本原理
配置MCU必须配置MCU GPIO,以读取按钮状态。
可读取连接的GPIO一旦开发了用于从GPIO读取按钮状态的代码,就可以在随后的TouchGFX HAL开发中使用该代码。
读取操作按预期进行轮询是应用程序渲染时间的一部分。 如果轮询时间太长,则应将其移至其他线程,或基于中断读取按键状态。

先决条件

  • 按钮必须连接到MCU的GPIO

执行

下图显示了按钮的原理图及与MCU的连接

在STM32CubeMX GPIO端口C中,引脚13(PC13)可配置为输入,通过在系统核心类别的GPIO部分进行配置

在下面的对话框中,我们还为GPIO配置了一个内部下拉。 如果您有一个外部下拉电阻器(如上图所示),则不需要。 这种情况下,您可以选择“无上拉和无下拉”。

STM32CubeMX生成的代码将设置相应的GPIO端口。 现在可以读取输入引脚:

main.c
uint8_t key;
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) != GPIO_PIN_RESET)
{
key = 1;
}

性能符合预期

如果按键轮询代码与TouchGFX应用程序在相同的线程中执行,可以在1 ms内轮询按钮的状态。 否则,渲染将延迟过多。 如果您使用直接连接到GPIO的按钮,不会有问题,但如果您使用I2C或类似的移位寄存器,可能会出现问题。 如果采样速度不够快,可以考虑在后期将轮询代码调整为独立任务,或基于中断读取按键状态。