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