您的位置:首页 > 产品设计 > UI/UE

STM32移植UCGUI3.90笔记

2013-05-15 10:14 316 查看
在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!)

移植步骤:

第一步:首先,得把你的TFT底层驱动写好,即在裸机下,可以正常显示。

第二步:加入UCGUI程序包。

第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。)

配置LCDConf.h文件如下:

#ifndef LCDCONF_H

#define LCDCONF_H

#define LCD_XSIZE (160) //配置TFT的水平分辨率

#define LCD_YSIZE (128) //配置TFT的垂直分辨率

#define LCD_CONTROLLER (54124) //TFT控制器的名称

#define LCD_BITSPERPIXEL (16) //每个像素的位数

#define LCD_FIXEDPALETTE (565) //调色板格式

#define LCD_SWAP_RB (0) //红蓝反色交换

#define LCD_INIT_CONTROLLER() TFT_Init() ; //此处需要定义的是你的TFT初始化函数

#endif /* LCDCONF_H */

配置GUIConf.h文件如下:

#ifndef GUICONF_H

#define GUICONF_H

#defineGUI_OS (1) //多任务

#define GUI_SUPPORT_TOUCH (0) //触摸

#define GUI_SUPPORT_UNICODE (1) //Unicode支持

#define GUI_DEFAULT_FONT &GUI_Font6x8 //GUI默认字体

#defineGUI_ALLOC_SIZE 5000 //动态内存的大小

#defineGUI_WINSUPPORT 1 //窗口控件支持

#define GUI_SUPPORT_MEMDEV 1 //支持内存设备

#defineGUI_SUPPORT_AA 1 /* Anti aliasing available */

#endif /* Avoidmultiple inclusion */

第四步:最关键的一步。那就是让GUI能够找到你的LCD驱动。修改LCDDriver。

在编写你的TFT底层驱动程序的时候,一定不能忘记编写这两个函数:设置一个像素和获取一个像素的颜色,因为后面很多UCGUI和你的TFT驱动关联起来需要这两个函数为前提。以我的TFT为例:

void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color)

{

….



}

unsigned short LCD_GetPixel(unsigned short x, unsigned short y)

{





}

这两个函数写好,并测试可以正常显示后,接下来需要修改TFT与UCGUI关联的函数(在一个C文件下(我的是ili9320_ucgui.c),建议大家在移植GCGUI之前最好下载个别人移植好的例程,对着修改这样难度降低很多):

int LCD_L0_Init(void)

{

TFT_Init();

return 0;

}

这个函数,是GCGUI初始化TFT需要调用的,里面的函数就是你TFT底层驱动的初始化函数。

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

{

LCD_SetPixel(x,y,PixelIndex);

}

unsigned int LCD_L0_GetPixelIndex(int x, int y)

{

return LCD_GetPixel(x,y);

}

上面两个函数是其他函数的最基本元素,其他函数比如画线、点、圆都需要调用改函数。里面的LCD_SetPixel(x,y,PixelIndex)、LCD_GetPixel(x,y);就是你TFT底层驱动设置像素和获取像素的两个函数。

紧接着把该ili9320_ucgui.c文件下其他函数修改一下(凡是遇到设置像素和获取像素的地方用以上两个函数代替。)

接着,修改另一个C文件(ili9320_api.c)这里修改很简单,仅仅也是将设置像素和获取像素的函数替换掉自己定义的即可。

最后,网上说需要修改那个GUI_X.c文件,由于我下载的是STM32模板(ILI9320的控制器),那个文件没有修改。

PS:我的开发环境MDK3.4以上版本,CPU:STM32F103RB TFT与MCU接口:模拟总线8位 1.8英寸 160×128分辨率的TFT

UCGUI版本3.90 UCOS版本2.86 在原基础上仅仅修改了以下几个文件:ili9320.c

、ili9320_ucgui.c 、ili9320_api.c 、GUIConf.h、LCDConf.h

由于网络的原因,稍后将整个工程上传上去,以及显示效果。呵呵 欢迎拍砖!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: