MCU/STM32F429I-DISC1 / / 2020. 5. 1. 00:31

[STM32F429I-DISC1 + TouchGFX] Toggle 버튼 적용하여 LED 점멸

지난 코드를 이용하여 버튼을 추가한다.

프로그램 툴은STM32CubeIDE 1.3.0,TouchGFX 4.13.0 Designer를 사용하였습니다.

소스코드 Github: https://github.com/bomhai/stm32f429i_disc1/tree/master/touchgfx_01_button

 

bomhai/stm32f429i_disc1

Contribute to bomhai/stm32f429i_disc1 development by creating an account on GitHub.

github.com

STM32F429I-DISC1 의 터치 IC는 stmpe811 이 사용되엇으며, 이 드라이브와 예제소스는 STM32CubeIDE ( MX ) 펌웨어 가있는 폴더에 있습니다.

하지만 지난번 프로젝트를 사용하므로 바로 작업하면 됩니다.

 

 

지난번 프로젝트에서는 stm32f429i_discovery_ts.h를 참조하지 않아서 File Path를 설정해주지 않았지만 지금은 사용을 하기 때문에 "BSP/STM32F429i-Discovery" 을 Language C++에Header File Path를추가합니다.

 

Project > TouchGFX > target > STM32TouchController.cpp 에서 관련된 BSP_TS_Init, BSP_TS_GetState을 적용합니다.

 

STM32CubeIDE ( MX ) 의 저장소에 STM32F429I-Discovery > Applications > Display > LTDC_Paint > SRC > main.c 를 확인하면 터치를 어떻게 읽어 오는지가 나타나 있습니다.

 

BSP_TS_GetState에서 stmpe811_TS_DetectTouch를 호출하여 TSC_CTRL의 bit7 ( TSC_STA )를 확인 후 터치 좌표를 읽어옵니다.

 

 

아래 함수는 TouchGFX에서 일반적으로 코드 생성될 때 적용되어 있는 함수입니다. TouchGFX 프레임워크는 이 함수를 폴링 방식으로 사용합니다.

 

  • bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)

Touch를 읽어오는 방식에서는 2가지 방법이 있습니다. ( 폴링, 인터럽트 )

TouchGFX.com에서 알려주듯이 해당 폴링 방식은 1ms 마다 호출되어 터치를 확인합니다.

폴링 방식 주기는 setTouchSampleRate를 이용하여 주기를 변경할 수 있습니다.

 

다음은 TouchGFX Designer을 실행하여 ToggleButton을 추가해줍니다.

 

 

Button의 이미지는 TouchGFX Designer에서 제공해주는 기본 스타일을 사용하여도 되고, 사용자가 이미지를 추가하여 press, unpress 일 때의 이미지를 설정할 수도 있습니다.

 

ToggleButton에 대한 Interaction을 생성합니다.

  • Trigger property을 "Button is clicked"으로 변경합니다.
  • Choose clicked source property를 "toggleButton" 으로 설정합니다.
  • Action property 를 "Call new virtual function"으로 변경합니다.
  • Function Name "toggleButtonClicked"으로 설정합니다.

Generate code를 클릭하여 소스를 생성합니다.

 

TouchGFX\generated\gui_generated\src\screen1_screen\Screen1ViewBase.cppScreenViewBase Class 를 확인하면 TouchGFX Designer 가 ToggleButton의 code를 어떻게 생성하는지 확인할 수 있습니다.

 

TouchGFX\gui\src\screen1_screen\Screen1View.cpp

TouchGFX\gui\include\gui\screen1_screen\Screen1View.hpp

Screen1View Class 에 toogleButtonClicked 가상 함수를 추가하여 버튼 상태에 따라 LED ON/OFF 하는 코드를 작성합니다.

 

 

 

사업자 정보 표시
봄해(BOMHAI) | 이동현 | 경기도 수원시 장안구 상률로 32 103동 1301 | 사업자 등록번호 : 564-09-02316 | TEL : 010-2977-3322 | Mail : dylan@bomhai.com | 통신판매신고번호 : 2023-수원장안-0750호 | 사이버몰의 이용약관 바로가기
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유