s3c2410裸跑uC/GUI
Author:Jackwen
Email:jackwen123@21cn.com
Target Board:GEC2410
FTF LCD: Sharp 3.5 240*320
uC/GUI Software package: uC/GUI3.90
经过一个星期多的努力,终于在TFT屏上显示出了“Hello World !” 。
移植uC/GUI主要集中在修改三个头文件和两个C文件。三个头文件都在\Config下,分别是GUICon.h,GUITouchConf.h,LCDConf.h ;两个C文件一个是GUI_X.C(Sample\GUI_X.C),.另外一个在GUI\LCDDriver目录下(我是选择LCDWin.c来修改的)。
1.修改头文件LCConf.h
主要修改的地方:
#defineLCD_XSIZE
#defineLCD_YSIZE
//#define LCD_BITSPERPIXEL (8)
#define LCD_BITSPERPIXEL(16)
#define LCD_CONTROLLER 1375
LCD_XSIZE
LCD_BISPERPIXEL
LCD_CONTROLLER控制器部分我没改,按原来定义的1375。uC/GUI的技术文档上没有SharpFTFP屏的控制器,就用LCD13XX中的一个来代替。
2 修改头文件GUI_Conf.h
#ifndef GUICONF_H
#define GUICONF_H
#defineGUI_OS
#defineGUI_SUPPORT_TOUCH
#defineGUI_SUPPORT_UNICODE
#defineGUI_DEFAULT_FONT
//#defineGUI_ALLOC_SIZE
#defineGUI_ALLOC_SIZE
#defineGUI_WINSUPPORT
#defineGUI_SUPPORT_MEMDEV
#defineGUI_SUPPORT_AA
#endif
GUI_0S 位1时支持OS,否则就是裸跑吧
GUI_SUPPORT_TOUCH 是否支持触摸屏
GUI_SUPPORT_UNICODE 是否支持ASCII/UNICODE
GUI_DEFAULT_FONT 选择一个默认的字体
GUI_ALLOC_SIZE
GUI_WINSUPPORT
GUI_SUPPORT_MEMDEV
GUI_SUPPORT_AA
3 修改 GUITouchConf.h
下面是说明如何修改uC/GUI的两个接口文件。
在LCD的最基本操作就是在某一个坐标上画点,其他的操作都是画点操作延伸出来的。uC/GUI的所有对LCD的操作也是基于这个动作。GEC2410的底层驱动代码上有这个函数PutPixel(x,y,c)。所以必须要把这个函数连接到uC/GUI的代码里面。连接的函数就在LCDDriver下,我选用LCDWin.c.
修改这个文件的时候要注意,首先要屏蔽掉第一行的条件编译语句 #if defined(WIN32)&& !defined(LCD_SIMCONTROLLER)和文件的最后一行的#endif
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)];
}
这两个函数连接到LCD_240X320.C中的Lcd_EnvidOnOff(int onoff)
int
void LCD_L0_ReInit() 连接到LCD_240X320.C 中的Lcd_Init();不加清屏函数。
最后修改GUI_X.C文件
由于没有OS,所以有关OS的语句都得修改,幸好不是很多,就两个地方而已。
GUI_X_GetTime(void) 返回当前的OS_TimeMS ,那就修改一下,把变量赋值一个数比如是10然后让函数返回这个值就行了 。
自己写个延时程序吧,也可以参照2410lib.c下的Delay()。
GUI_X_Init();完成硬件的初始化,包括时钟频率设置,端口设置,中断设置,LCD初始化等等一系列动作。在2410lib.c中可以找到这些函数的原型。
做完以上的工作基本上算是完成了移植的工作了。
最后在主函数上编写测试程序
int Main()
{GUI_Init();
GUI_DispString("Hello world!");
}
编译通过后 ,LCD上就会出现 “Hello World !”了。
^_^