[STM32L5] 【STM32L562 DK试用】TouchGFX适配触摸实现LED控制

[复制链接]
 楼主| lulugl 发表于 2025-5-17 10:22 | 显示全部楼层 |阅读模式
【前言】
在前面几篇中,我移植好了TouchGFX、以及触摸驱动,那么适配触摸屏与TouchGFX也是基础之本,这一篇,我将适配触摸与touchgFX的结合,实现一个按键来实现板载LED的控制功能。
【移植】
1、在touchgfxDesiger上创建一个按键:
768596827ed98a847f.png
2、创建一个基于按键的虚拟函数:
346936827edf397146.png
3、重新生成工程。
4、在STM32TouchController.cpp中引用触摸驱动头文件,并声明触摸全局函数:
  1. #ifdef __cplusplus  
  2. extern "C"{  
  3. #include "stm32l562e_discovery_ts.h"
  4. }  
  5. #include <stdio.h>
  6. extern __IO FlagStatus TouchDetected;
  7. TS_MultiTouch_State_t TsMultipleState = {0};
  8. #endif  
543566827ee733fe2b.png
5、适配touchgfx的触摸坐标获取:
  1. bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
  2. {

  3.                
  4.                 if (TouchDetected == SET)
  5.     {
  6.       TouchDetected = RESET;

  7.                         BSP_TS_Get_MultiTouchState(0, &TsMultipleState);

  8.                         if(TsMultipleState.TouchDetected >= 1)
  9.                                 {
  10.                                         /* Get X and Y position of the touch post calibrated */
  11.                                         x = TsMultipleState.TouchX[0];
  12.                                         y = TsMultipleState.TouchY[0];
  13.                                         return true;
  14.                                 }
  15.                         }
  16.     return false;
  17. }
6、在screeView.hpp声明虚拟函数:
635826827ef0b64db5.png
7、在screeView.cpp实现虚拟函数:
881696827ef371719f.png
  1. #include <gui/screen_screen/screenView.hpp>
  2. #include "stm32l562e_discovery.h"
  3. screenView::screenView()
  4. {

  5. }

  6. void screenView::setupScreen()
  7. {
  8.     screenViewBase::setupScreen();
  9. }

  10. void screenView::tearDownScreen()
  11. {
  12.     screenViewBase::tearDownScreen();
  13. }

  14. void screenView::button_click()
  15. {
  16.         BSP_LED_Toggle(LED9);
  17. }
【实现效果】
343766827f2e38b441.gif

您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

830

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部