【前言】
在前面几篇中,我移植好了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);
}
【实现效果】
|