지난 코드를 이용하여 버튼을 추가한다.
프로그램 툴은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.cpp 의 ScreenViewBase 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 하는 코드를 작성합니다.
'MCU > STM32F429I-DISC1' 카테고리의 다른 글
STemWin 간단 사용기 (0) | 2020.07.29 |
---|---|
[STM32F429I-DISC1 + TouchGFX] TextAreaWithOneWildcard 이용하기. (0) | 2020.05.25 |
[STM32F429I-DISC1 + TouchGFX] STM32CubeIDE 이용하여 LCD 구동하기 (17) | 2020.04.20 |