주요 내용으로 건너뛰기

10. Physical Buttons

개요​

물리적 버튼은 애플리케이션 개발 단계에서 TouchGFX Designer에서의 트리거로 사용할 수 있는 외부 이벤트 역할을 하거나, 애플리케이션 백엔드에서 이벤트로 사용될 수 있습니다.

Note
물리적 버튼이 보드 브링업과 관련이 없다면 이 단계를 건너뛰십시오.

목표​

이 섹션의 목표는 후속 TouchGFX HAL 및 애플리케이션 개발에서 사용할 수 있는 코드를 개발하는 것입니다.

확인​

다음은 이 섹션에서 확인해야 할 사항입니다.

확인사항확인근거
MCU의 구성 여부MCU GPIO는 연결된 물리적 버튼의 상태를 판독하도록 구성되어야 합니다.
연결 GPIO의 판독 가능 여부GPIO에서 물리적 버튼 상태를 판독하기 위한 코드가 개발되어 있으면 이 코드를 후속 TouchGFX HAL 개발에서 사용할 수 있습니다.
읽기 작업이 예상대로 수행되는지 여부애플리케이션 렌더링 시간에 폴링 시간이 포함되어 있습니다. 폴링에 너무 많은 시간이 소요되는 경우 다른 스레드로 옮기거나 인터럽트 기반으로 만들어야 합니다.

전제 조건​

  • 물리적 버튼은 MCU의 GPIO에 연결되어야 합니다.

실행​

아래 그림은 회로도가 물리적 버튼에서 어떻게 보이고, MCU에 어떻게 연결되어 있는지를 보여줍니다.

STM32CubeMX에서는 GPIO Port C Pin 13(PC13) 을 입력으로 구성하고, System Core 범주의 GPIO 섹션에서 풀 다운으로 구성할 수 있습니다.

STM32CubeMX에서 생성된 코드는 읽을 수 있는 적절한 GPIO 포트(들)를 설정하게 됩니다.

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

예상대로 성능이 발휘되는지 여부​

TouchGFX 애플리케이션과 동일한 스레드에서 코드가 실행되는 경우, 1ms 내에 물리적 버튼의 상태를 폴링하는 것이 가능합니다. 속도가 만족스럽지 않은 경우에는 이후 단계에서 코드를 별도의 작업으로 옮기거나 인터럽트 기반으로 만드는 방법을 고려해보십시오.