STM32F103 UCGUI3.90移植+触摸屏教程

前言

这是大二暑假学习STM32时写的一篇的教程,当初移植的时候耗费了好大的力气,集齐了万千网友的智慧和教程,归纳总结整理出来的,在此记录一下。

一.准备工作

1.采用UCGUI3.90版本———下载UCGUI3.90.zip。 点击下载

2.准备好自己的LCD驱动程序。

3.自行新建一个工程模板(本人采用的是正点原子战舰开发板的TFTLCD显示实验例程作为模板)备用。

4.解压打开UCGUI文件夹,1)将Start文件夹中的Config和GUI文件夹复制粘贴到自己的工程文件中。2)将Sample\GUI_X中的GUI_X.C复制粘贴到Config中。


5.由于UCGUI\Core下有LCD.C和LCD.H文件,而例程中也有,为了防止重复,需将原工程中的LCD.C和LCD.H修改为其他名称,例:ILI93XX.C ILI93XX.H

6.修改ILI93XX.C中的LCD初始化函数LCD_Init,将其改为TFTLCD_Init(名称自定)

7.将ILI93XX.H中原LCD改为TFTLCD,全局修改。

二.开始移植

1.将文件添加进工程


2.添加路径


3.接下来需要修改三个文件GUIConf.h LCDConf.h LCDDummy.c

1)首先修改GUIConf.h,将其修改为如下图所示

2)修改LCDConf.h

3)修改LCDDummy.c(LCDDriver下有三个文件都是模板,修改其中一个即可,我们以LCDDummy.c为例)主要是对函数进行优化

找到void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex),添加自己的画点函数

找到unsigned int LCD_L0_GetPixelIndex(int x, int y),添加自己的读点函数

在这里主要优化以上两个函数,大家可以根据自己的需要自行优化
注意,下面这句话需要注释掉,不然文件不会编译,同时需要include ”ili93xx.h“

经过以上几布的移植,UCGUI已经可以使用了(不包括触摸屏)。

移植触摸屏

1.准备好触摸屏的驱动文件(本人用的是touch.c 和touch.h),添加到工程中。
2.将Sample\GUI_X中的GUI_X_Touch.c复制粘贴到Config中,再添加到工程中。
3.在GUIConf.h下修改。

#define GUI_SUPPORT_TOUCH         (1) 

4.接下来需要配置几个文件,首先是:
1)GUITouchConf.h

GUI_TOUCH_AD_LEFT, GUI_TOUCH_AD_RIGHT, GUI_TOUCH_AD_TOP, GUI_TOUCH_AD_BOTTOM 这四个的值需要实测,测量方法自行百度。

2)GUI_X_Touch.c

上图4个函数前两个无需配置,按上图形式在后两个函数中添加你的读X轴,读Y轴函数TPReadX( ),TPReadY( )

5.由于我们没有移植UC/OSII,不支持任务,所以需要靠定时刷新GUI_TOUCH_Exec( ) 这个函数,驱动函数获取坐标值重绘窗口,方法是在定时器中断TIMx_IRQHandler中加入GUI_TOUCH_Exec( ),GUI_Exec( ),实现坐标获取(添加timer.c和timer.h)

6.经过以上几步,触摸屏移植完成 注意:触摸屏初始化SPI_Config( )要在定时器初始化TIM6_Int_Init(99,7199)前,不然会白屏。

完结。。。