控制/MCU
STM32裸机上移植ucGUI触摸屏的过程详述如下:
1、将正点原子的《触摸屏移植实验》中HARDWRAE/TOUCH目录复制到已经建立好的ucGUI工程目录的HARDWARE文件夹下,并添加touch.c文件和头文件路径。
2、打开ucGUI工程中的GUIConf.h文件,将其中的GUI_SUPPORT_TOUCH和GUI_WINSUPPORT总开关打开。如下所示:
1#define GUI_SUPPORT_TOUCH 1 /* Support a touch screen (req. win-manager) */2#define GUI_WINSUPPORT 1 /* Window manager package available */
此时编译程序,会出现四个函数未定义的错误。
3、在GUI_X中添加文件GUI_X_Touch.c,此时编译工程错误消失。
4、在GUI_X_Touch.c中添加预处理命令#include “touch.h”。然后将其中的GUI_TOUCH_X_MeasureX和GUI_TOUCH_X_MeasureY两个函数改为如下所示的形式:
01intGUI_TOUCH_X_MeasureX(void) {02u16 x,y;03Read_ADS2(&x,&y);04returnx;05}06
07intGUI_TOUCH_X_MeasureY(void) {08u16 x,y;09Read_ADS2(&x,&y);10returny;11}
5、由于是在裸机上运行ucGUI程序,对话框程序会阻塞当前进程的执行。所以需要在定时器中断中不断的去扫描触摸屏的状态。设置定时器10ms中断一次,在定时器中断处理函数中加入GUI_TOUCH_Exec()语句。
6、在主函数中加入初始化定时器和触摸屏,并在GUI_Init()函数之后加入GUI_CURSOR_Show函数以显示指针。
7、以上就完成了触摸屏的移植操作,下面对触摸屏的工作状态进行配置。由于我的显示屏是横屏显示,所以我的将GUITouchConf.h文件配置成如下形式:
1#define GUI_TOUCH_AD_LEFT 2312#define GUI_TOUCH_AD_RIGHT 18343#define GUI_TOUCH_AD_TOP 3384#define GUI_TOUCH_AD_BOTTOM 17645
6#define GUI_TOUCH_SWAP_XY 17#define GUI_TOUCH_MIRROR_X 08#define GUI_TOUCH_MIRROR_Y 0
对于使用正点原子STM32 Mini开发板的同学可以试试上面的参数。如果GUI_TOUCH_AD_XXXX这四个参数很重要,配置不合适会出现指针停留在左上角不动,指针跟触摸的位置不同等问题。下面三个参数设置不合适会出现指针移动的方向跟触摸的方向不一致的问题。
上面四个参数的设置需要读取触摸屏的左上角和右下角的AD采样值来确定。
8、触摸屏的使用需要窗口等回调函数的支持,应首先移植好一个窗口程序之后再将触摸屏移植上去进行验证。
全部0条评论
快来发表一下你的评论吧 !