您的当前位置:首页正文

STM3移植uCGUI3.9详细教程

来源:爱站旅游
导读STM3移植uCGUI3.9详细教程
祥龙电子——liky luo

STM32 平台移植 uCGUI 3.90详细教程 v1.0

硬件平台:stm32f103zet6

软件平台:RVMDK_v4.20 + StmLib_v3.5 + uCGUI_v3.9 TFTLCD型号: 3.2寸9320控制器 文档作者:祥龙电子——liky luo 时间:2013-11-19

uCGUI是一种嵌入式应用中的图形支持系统.它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的, 由不同的模块中的不同层组成, 由一个LCD驱动层来包含所有对LCD的具体图形操作, uCGUI可以在任何的CPU上运行, 因为它是 100%的标准C代码编写的。uCGUI能够适应大多数的使用黑白或彩色LCD的应用, 它提供非常好的允许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系。

祥龙电子——liky luo

移植教程

一、 准备工作:

(一) 工程文件:准备一个工程模板文件,例如笔者的工程文件如下图所示:

(二) 源码:准备 3.90 版本的 UCGUI 源码注:如果需要跑 GUIDEMO,那么还需准备

GUIDEMO 源码。解压笔者整理的官方源码如下图所示:

其源代码主要在start文件夹下,Sample是官方制作的一个Demo例程,我们一会再移植的过程中,需要用到里面的文件,这儿跳过,以下是对start作出简介:

祥龙电子——liky luo

注:官方的3.90版本的ucgui源码包少了一个文件夹,以致于很多网友在移植编译的时

候出现错误,因此笔者经过整理,已经将整理好的代码上传到新浪爱问,大家直接搜索“UCGUI3.9.rar”第一个即是笔者上传的。把下载的源码解压可得到四个文件夹,前三个英文名的则是官方源码,最后一个名为“移植所需文件”则是笔者整理官方源码出来移植所需的文件。移植时,只需将“移植所需文件”文件夹里的所有文件copy到工程文件夹下ucgui文件夹下即可。

(三) LCD 底层驱动:准备 LCD 屏的底层驱动,接口函数如下:

1、 设置坐标点;

static void ili9320_SetCursor(u16 x,u16 y); 2、 在指定点画指定颜色的点;

void ili9320_SetPoint(u16 x,u16 y,u16 point);

3、 读取某个点的颜色值;

u16 ili9320_GetPoint(u16 x,u16 y);

祥龙电子——liky luo

4、 在指定区域填充颜色(开窗口的方式,速度更快);

void ili9320_window_fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 color);

5、 LCD 屏初始化(主要是出厂初始化代码);

void ili9320_Init(void);

注:这里列出了和 UCGUI 的接口函数,这些函数的具体实现需要根据自己的 LCD 屏具体实现这些函数。需要注意的是,LCD驱动函数最好不要以LCD开头命名,否则容易与ucgui官方源码中一些函数相冲突,导致编译报错。同时,LCD的驱动文件(一般是.c和.h文件)也不要以LCD命名,最好以LCD驱动型号命名,例如笔者使用的是ili9320的驱动,则有关的文件以及函数则以ili9320开头命名。这一点十分重要,否则编译通不过。

二、

移植过程

件 copy 到自己的工程中UCGUI 文件夹下面,方便管理。这里针对需要拷贝的代码文件,笔者已经上传,大家下载后只需将“移植所需文件”文件夹里的所有文件copy到工程文件夹下ucgui文件夹下即可;

(一) 首先在工程文件夹中建立一个文件夹,并命名为 UCGUI ,然后将官方源码中部分文

(二) 在MDK中打开工程文件,并在已有的分组中添加以下分组,如图红色方框所围分组:

祥龙电子——liky luo

文件与组的添加方法在此不再重复,只需右击项目名称,选择Manage Components即可,其中用红色方框框出的那部分是需要新创建的,在进行了一系列的创建以后,需给每个组添加文件,具体添加如下:

 GUI_X组中添加

uCGUI移植\\\GUI_X_uCOS.c文件 uCGUI移植\\\Config中的C文件

 GUI_Config组中添加  GUI_LCDDriver组中添加  GUI_Demo组中添加

uCGUI移植\\\LCDDriver\\GLCD.c文件

uCGUI移植\\\GUIDemo中的C文件

 GUI_Antialias组中添加 uCGUI移植\\\AntiAlias中的C文件  GUI_ ConvertColor组中添加 uCGUI移植\\\ConvertColor中的C文件  GUI_ ConvertMono组中添加 uCGUI移植\\\ConvertMono中的C文件  GUI_ Core组中添加  GUI_ Font组中添加  GUI_ JPEG组中添加

uCGUI移植\\\Core中的C文件

uCGUI移植\\\Font中的C文件

uCGUI移植\\\JPEG中的C文件

祥龙电子——liky luo

 GUI_ LCDDriver组中添加  GUI_ MemDev组中添加

uCGUI移植\\\LCDDriver中的C文件 uCGUI移植\\\MemDev中的C文件

 GUI_ MultiLayer组中添加 uCGUI移植\\\MultiLayer中的C文件  GUI_ Widget组中添加 uCGUI移植\\\Widget中的C文件  GUI_ WM组中添加

uCGUI移植\\\WM中的C文件

注:在往GUI_Config分组里添加文件时,文件类型选择All,以便添加.h类型的文件。同时,如图所示的最后三个分组文件夹里,可以暂时不需要添加文件,如果添加了文件,则会导致编译的时间过长,一般达到5分钟左右,因此,为了节省编译时间,我们这里就不往此三个组里添加文件了。不过添加不添加也不影响我们后续操作。

(三) 添加头文件路径,如图:

(四) 打开 GUI_Config 文件夹,编辑 GUIConf.h 文件,将一些参数修改如下图所示:

祥龙电子——liky luo

(五) 打开 GUI_Config 文件夹,编辑 LCDConf.h 文件,内容如下:

同时将此文件下面的语句全部删除,具体可参见笔者代码。

(六) 打开 GUI_LCDDriver 文件夹,编辑 LCDDummy.c 文件,内容如下:

1、 先添加 LCD 驱动文件的头文件,以便下面函数调用;

如:#include \"ili9320.h\"

2、 确保 #if (LCD_CONTROLLER == -1) \\

祥龙电子——liky luo

&& (!defined(WIN32) | defined(LCD_SIMCONTROLLER)) 中的 LCD_CONTROLLER == -1 ,和 LCDConf.h 中的宏定义对应

3、 在 void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 函数最后一行添加

如下语句:

ili9320_SetPoint( x, y, PixelIndex);

4、 在 unsigned int LCD_L0_GetPixelIndex(int x, int y) 函数 return 语句之前添加如下语句:

PixelIndex = ili9320_GetPoint(x, y);

5、 现在回到 main 函数

1) 添加头文

#include \"GUI.h\" #include \"GUIDEMO.h\"

2) 在 main 函数中先调用必要的初始化函数后,再调用 GUI_Init(); 函数,这

个函数会调用 LCD 屏的初始化函数

3) 为了测试 UCGUI 是否初始化成功,我们先调用几个函数试试,在 GUI_Init();

下面接着调用如下函数: GUI_SetBkColor(GUI_BLACK); GUI_SetColor(GUI_RED); GUI_Clear();

GUI_SetFont(&GUI_Font24_1);

GUI_DispStringAt(\"- - uCGUI disp Function sample - -\

// 延时 3s,方便观看结果 delay_ms(1000); delay_ms(1000);

祥龙电子——liky luo

delay_ms(1000);

看看是否把 LCD 刷成黑色,是否显示红色字符串

图片效果:

祥龙电子——liky luo

声明:

本教程是笔者在学习uCGUI移植到stm32过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。如需转载,请注明出处。

平台: stm32f103zet6 TFTLCD型号: 3.2寸9320控制器 ucgui源码: 3.90版本

触屏: 不带触屏(后续更新) 操作系统: 不支持

作者:liky luo

时间:2013-11-19 版本:V1.0

因篇幅问题不能全部显示,请点此查看更多更全内容

Top