|
我在STM32F407IGT6上移植ucosiii+emwin5.16,根据教程,可以顺利的运行emwin的demo,那么接下来就是移植触摸屏了,在函数int GUI_TOUCH_X_MeasureX(void) ;中returng_tTP.usAdcNowX鼠标一直没有反应,后来改成 return g_tTP.Xbuf[0],发现鼠标可移动了,但是位置不对,接着又查资料,定位到int GUI_TOUCH_Calibrate(int Coord, int Log0, int Log1, int Phys0, int Phys1);函数,发现EMWIN需要你告诉它逻辑值与触摸屏ADC物理值的对应关系:
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, XSIZE_PHYS - 1, GUI_TOUCH_AD_LEFT, GUI_TOUCH_AD_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, YSIZE_PHYS - 1, GUI_TOUCH_AD_TOP, GUI_TOUCH_AD_BOTTOM);
这是在LCD_X_Config()中已经有的,go to defination到GUI_TOUCH_AD_LEFT,发现这里的数字需要我们自己根据屏幕参数修改,我就作了如下修改:
#define GUI_TOUCH_AD_LEFT 0 //35
#define GUI_TOUCH_AD_RIGHT 800 //980
#define GUI_TOUCH_AD_TOP 0 //915
#define GUI_TOUCH_AD_BOTTOM 480 //90
直接改成坐标值,那么就和GUI_TOUCH_X_MeasureX()对应上了,我的是7寸屏,运行程序,鼠标可以跟随手指移动了,但是有拖影!!!
看了其他教程,说LCD读点函数有问题,我的读点函数如下:
uint16_t RA8875_GetPixel(uint16_t _usX, uint16_t _usY)
{
uint16_t usRGB;
RA8875_SetReadCursor(_usX, _usY);
RA8875_WriteCmd(0x02);
usRGB = RA8875_ReadData16();
usRGB = RA8875_ReadData16();
return usRGB;
}
改成读三次数据拖影加重,改成读一次数据拖影大幅度消减了,但还是有拖影,特别是在显示的字体上拖动鼠标直接将字体覆盖,请问这个问题怎么解决!!!跪求大佬!!!
|
|