- UID
- 1029342
- 性别
- 男
|
最近一段时间以来,准备移植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
| 视窗管理器
*
| (带“*”标志的为可选项,不同版本带的有所不同)
说明:移植是要特别注意配置文件Config和GUI/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;
} |
|