UcGUI的移植主要修改三个头文件和两个C文件。三个头文件都在\Config下,分别是GUICon.h ,GUITouchConf.h,LCDConf.h ;两个C文件一个是GUI_X.C(Sample\GUI_X.C) ,.另外一个在GUI\LCDDriver目录下(我是选择LCDWin.c来修改的)。
1.修改头文件LCConf.h
主要修改的地方:
#define LCD_XSIZE (240)
#define LCD_YSIZE (320)
//#define LCD_BITSPERPIXEL (8)
#define LCD_BITSPERPIXEL (16) //16Bpp
#define LCD_CONTROLLER 1375
LCD_XSIZE ,LCD_YSIZE 是对应你的LCD的尺寸大小
LCD_BISPERPIXEL 指定每象素的位的数量
LCD_CONTROLLER控制器部分我没改,按原来定义的1375。uC/GUI的技术文档上没有Sharp FTFP屏的控制器,就用LCD13XX中的一个来代替。
2 修改头文件GUI_Conf.h
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (0)
#define GUI_SUPPORT_TOUCH (0)
#define GUI_SUPPORT_UNICODE (1)
#define GUI_DEFAULT_FONT &GUI_Font6x8
//#define GUI_ALLOC_SIZE 12500
#define GUI_ALLOC_SIZE 1024*1024
#define GUI_WINSUPPORT 0
#define GUI_SUPPORT_MEMDEV 0
#define GUI_SUPPORT_AA 0
#endif
GUI_0S 位1时支持OS,否则就是裸跑吧
GUI_SUPPORT_TOUCH 是否支持触摸屏
GUI_SUPPORT_UNICODE 是否支持ASCII/UNICODE
GUI_DEFAULT_FONT 选择一个默认的字体
GUI_ALLOC_SIZE 动态内存的大小
GUI_WINSUPPORT 是否支持 WM(视窗管理器)
GUI_SUPPORT_MEMDEV 是否支持存储设备
GUI_SUPPORT_AA 是否支持反锯齿
3 修改 GUITouchConf.h
如果需要支持触摸屏的话,这个头文件也要作相应的修改。
下面是说明如何修改uC/GUI的两个接口文件。
在LCD的最基本操作就是在某一个坐标上画点,其他的操作都是画点操作延伸出来的。uC/GUI的所有对LCD的操作也是基于这个动作。Mimi2440的底层驱动代码上有这个函数PutPixel(x,y,c)。所以必须要把这个函数连接到uC/GUI的代码里面。连接的函数就在LCDDriver下,我选用LCDWin.c.
修改这个文件的时候要注意,首先要屏蔽掉第一行的条件编译语句 #if defined(WIN32) && !defined(LCD_SIMCONTROLLER) 和文件的最后一行的#endif 顺便把#endif头上的#else 也干掉。这个文件是针对PC仿真的,不注释掉这几个地方,整个文件都不会被编译的。
PutPixel(x,y,c)在LCD_240X320.C中,由于PutPixel(x,y,c)被定义成了 static ,那就在LCD_240X320.C的后面加一个外部函数调用PutPixel(x,y,c) 。当然去掉static也行。
void LCD2410_SetPixel(U32 x,U32 y,U32 c)
{PutPixel(x,y,c);
}
然后把LCDWin.c的LCDSIM_SetPixelIndex(x, y, c, LCD_DISPLAY_INDEX)全部替换成LCD2410_SetPixel(x,y,c)
你会发现里面还有一个LCDSIM_GetPixelIndex(x,y, LCD_DISPLAY_INDEX); 那就在LCD_240X320.C造一个函数出来吧。参照 PutPixel() 造一个出来
void GetPixel(U32 x,U32 y,U32 c)
{
if ( (x < SCR_XSIZE_TFT_240320) && (y < SCR_YSIZE_TFT_240320) )
c=LCD_BUFER[(y)][(x)]; //对调过来,呵呵,简单吧!
} |