首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

uCGUI 学习笔记

uCGUI 学习笔记

最近一段时间以来,准备移植uCGUI。在网络上找了大量的移植资料和学习教程,但都没有什么突破性进展。不知道是自己水平有限,还是网络上的资料不够系统,总是不得入门之路。经过自己的不断努力,感觉移植并不是什么难事,关键是要知道移植的过程。现将学习中遇到的问题和已经记录下来,方面自己的翻阅,已可以为初学者提供一条捷径。


一、 uCGUI的了解:

在移植之前最好对uCGUI有一定的了解,这样会加快移植的速度,也可以减少不少弯路。


①.最好通读一遍《uCGUI用户手册》,在网络上有很多。有中文版也有英文版的,里边详细的介绍了uCGUI的所有API函数及一些例程,并提供了配置说明。特别是从20章开始就跟移植有很大的关系,而前面的十几章主要是介绍应用。



②.对源代码要有所了解,当然这方面的介绍在《uCGUI用户手册》的第二章中也有。不过不同版本的文件夹有所不同,但内核基本是相同的就是加了些附加功能而已。



下表显示了GUI 所有子目录的内容:



目 录

内容

Config
配置文件(根据应用配置

GUI/AntiAlias

抗锯齿支持
*

GUI/ConvertMono

用于B/W(黑白两色)及灰度显示的色彩转换程序

GUI/ConvertColor

用于彩色显示的色彩转换的程序

GUI/Core

μC/GUI 内核

GUI/Font

字体文件

GUI/LCDDriver

LCD驱动(移植部分:根据需要修改或添加

GUI/JPEG

JPEG图像支持
*

GUI/Mendev

存储器件支持
*

GUI/Touch

触摸屏支持
*

GUI/Widget

视窗控件库
*

GUI/WM
视窗管理器
*

(带“*”标志的为可选项,不同版本带的有所不同)

说明:移植是要特别注意配置文件ConfigGUI/LCDDriver

①.GUI/LCDDriver文件夹中存放的是一些LCD驱动代码,如果你使用的LCD在这里可以找到代码,可以直接通过Config中的LCDConfig.h里边的:


#define LCD_CONTROLLER -1
// -1
:表示没有选择的LCD驱动,而是使用里边的样本程序进行修改。

uCGUI中具体支持哪些LCD?可以查询《uCGUI用户手册》的第22章 LCD驱动程序。里边详细的说明了,支持些什么控制器的LCD。

②.在工程中只需加载需要的LCD驱动代码文件即可。如果设置为-1,则选择加载LCDDummy.C或LCDTemplate.C文件(不同的版本,此代码的文件名可能会不同)。




二、 代码移植:

1. 必须编写好LCD的驱动函数,当然如果uCGUI中已经包含了移植需要的LCD底层驱动,就不用再编写。如果没有就需要编写好LCD的底层驱动。底层驱动需要包含如下函数:

①.LCD_Init
(): LCD初始化函数。

②.LCD_SetPixel(): LCD画点函数。

③.LCD_GetPixel(): LCD读点颜色函数。



2.编写好这三个函数后,可以直接在LCDDummy.C或LCDTemplate.C文件中添加相应的代码

①.添加画点函数:

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

/* Write into hardware ... Adapt to your system */


{


/* ... */ 添加画点函数


}

}



②.添加获取像素点颜色函数:

unsigned int LCD_L0_GetPixelIndex(int x, int y) {

/* Read from hardware ... Adapt to your system */


{

PixelIndex = 0;
/* ... */ 添加获取像素点颜色函数


}


return PixelIndex;

}

③.添加初始化函数:

int
LCD_L0_Init(void) {


LCD_INIT_CONTROLLER();
// 把这句改成LCD_Init
();


return 0;

}
继承事业,薪火相传
返回列表