【前言】
在前面几篇中,我移植好了TouchGFX、以及触摸驱动,那么适配触摸屏与TouchGFX也是基础之本,这一篇,我将适配触摸与touchgFX的结合,实现一个按键来实现板载LED的控制功能。
【移植】
1、在touchgfxDesiger上创建一个按键:
2、创建一个基于按键的虚拟函数:
3、重新生成工程。
4、在STM32TouchController.cpp中引用触摸驱动头文件,并声明触摸全局函数:
- #ifdef __cplusplus
- extern "C"{
- #include "stm32l562e_discovery_ts.h"
- }
- #include <stdio.h>
- extern __IO FlagStatus TouchDetected;
- TS_MultiTouch_State_t TsMultipleState = {0};
- #endif
5、适配touchgfx的触摸坐标获取:
- bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
- {
-
- if (TouchDetected == SET)
- {
- TouchDetected = RESET;
- BSP_TS_Get_MultiTouchState(0, &TsMultipleState);
- if(TsMultipleState.TouchDetected >= 1)
- {
- /* Get X and Y position of the touch post calibrated */
- x = TsMultipleState.TouchX[0];
- y = TsMultipleState.TouchY[0];
- return true;
- }
- }
- return false;
- }
6、在screeView.hpp声明虚拟函数:
7、在screeView.cpp实现虚拟函数:
- #include <gui/screen_screen/screenView.hpp>
- #include "stm32l562e_discovery.h"
- screenView::screenView()
- {
- }
- void screenView::setupScreen()
- {
- screenViewBase::setupScreen();
- }
- void screenView::tearDownScreen()
- {
- screenViewBase::tearDownScreen();
- }
- void screenView::button_click()
- {
- BSP_LED_Toggle(LED9);
- }
【实现效果】
|