STM32 移植 STemwin(Touch)
程序员文章站
2022-03-06 08:01:08
...
上篇讲到了STemwin的基本移植步骤,这里再讲下Touch的支持。
- 驱动好自己的触摸屏,准备好测量X,Y 返回为ADC值的函数。这个一般也不难
- 准备好GUI_TOUCH_X.C文件,这里比较坑的就是这个文件没有包含在STemwin的包里面(至少5.32里面没有),需要自己写一个,其实内容很简单,如下
#include "GUI.h"
#include "XPT2046.h"
void GUI_TOUCH_X_ActivateX(void) {
}
void GUI_TOUCH_X_ActivateY(void) {
}
int GUI_TOUCH_X_MeasureX(void) {
return XPT2046_READ_X();
}
int GUI_TOUCH_X_MeasureY(void) {
return XPT2046_READ_Y();
}
添加好X,Y的测量函数, x,y的Activate函数可以空。
- 回到LCDConf_FlexColor_Template.c文件中增加触屏的校准函数。
#define TOUCH_AD_LEFT 3930 //触摸左上角x轴的AD值(注意是AD值,也叫物理坐标)
#define TOUCH_AD_RIGHT 166 //触摸屏幕右下角边x轴的AD值
#define TOUCH_AD_TOP 3930 //触摸左上角y轴的AD值
#define TOUCH_AD_BOTTOM 233 //触摸右上角y轴的AD值
void LCD_X_Config(void) {
GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0);
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 319, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 479, TOUCH_AD_TOP, TOUCH_AD_BOTTOM);
}
4.回到Main.c增加 GUI_TOUCH_Exec()
while (1)
{
GUI_Delay(10);
GUI_TOUCH_Exec();
}
好了这样就设置好了,很简单吧。
Enjoy!