作者:东方钰
转自:http://blog.chinaunix.net/uid-27106528-id-3478821.html
ucgui 移植的前提是已经具备了LCD驱动函数,已经能够实现点亮LCD屏幕,并实现画点以及获取指定点颜色值的功能。一般的显示屏供应商会提供对应的驱动函数。主要有初始化函数void LCD_Init(),屏幕画点函数 Void LCD_DrawPoint(u16 x,u16 y,u16 color),以及获取指定点颜色值的U16 LCD_ReadPoint(u16 x,u16 y)函数。移植的关键在于把这三个函数与ucgui提供的接口函数匹配。
打开GUI\LCDDriver中的LCDDummy.c文件,找到int LCD_L0_Init(void)初始化函数,LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)画点函数,unsigned int LCD_L0_GetPixelIndex(int x, int y)读取颜色值函数,把LCD驱动函数填入其中,如下图:
关于LCD配置的含义的解释,需要根据所选的屏幕的大小,颜色深度做出修改。网络上有很多说明, 在此不再重复。
我在Keil uVision4中碰到的一些问题,做出记录。
编译过程中,出现. \Output\TFT触摸屏.axf: Error: L6218E: Undefined symbol exit (referred from jerror.o). 错误
在网络上搜到了一些解答,说是在编译配置中选项不能使用微库,如下图:
我去掉这个选项后,发现编译能够通过。下载到开发版中,总是不能运行,调试发现,一开始就进入了硬件错误处理中断void HardFault_Handler(void)中。
于是,我又把微库选上,进入了UCGUI/JPEG/jerror.c中,找到error_exit (j_common_ptr cinfo)函数中的exit(EXIT_FAILURE),把这行给注释掉,改用return直接返回。
再次编译,通过。下载到开发板中,能够正常运行。