跳转到主要内容

10. 按钮

动机

按钮可作为外部事件,在应用程序开发期间用作TouchGFX Designer的触发信号,也可以简单地用作应用程序的后端事件。

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或类似的移位寄存器,可能会出现问题。 如果采样速度不够快,可以考虑在后期将轮询代码调整为独立任务,或基于中断读取按键状态。