ucGUI移植

本文使用的是单独移植ucGUI到STM32开发板来制作不涉及uCOS系统移植。在进行ucGUI移植前先简单介绍本次用到的ucGUI;众所周知,ucGUI是一种嵌入式系统中的图形设计软件,我们可以利用它来制作操作界面、图像等用于在显示器上显示;ucGUI以其高效的独立于处理器和ili9320(本设计的LCD控制器)的图形接口、优秀的灰度颜色管理和强大的窗口管理体系,在图形设计领域占据了一席之地。

本文的移植是正是利用ucGUI (V 3.90 版)作为源代码,移植到自己建好且编译无误的STM32完整工程上;接下来修改其中的头文件和C文件使其匹配自己的开发板,调试运行无误后,在主程序中调用窗体框架程序显示界面。试运行没有错误,能完美显示界面,移植完成。

移植具体步骤如下:


STEP1: 打开源代码的文件夹将其文件路径”start-config”以及 ”start-GUI”复制到工程目录下的GUI文件夹中;复制文件路径”sample-GUI_X.c”到工程文件目录”config”中;这样文件复制的部分已完成的差不多,第二步就开始修改文件。

 

STEP2: 在user中打开工程文件test,在keill中添加之前加入的工程文件。

 

STEP3: 分别修改config 文件夹中的 “LCDconf.h”、GUIConf.h”、”GUITouchConf.h”和LCDWin.c。

 

1)     LCDconf.h 文件修改
该部分文件主要配置LCD的分辨率以及像素等;本设计是240*320的分辨率;
按照本次设计的需求代码修改配置如下:

#ifndef LCDCONF_H

#define LCDCONF_H

#define LCD_XSIZE      (240)  /* lcd 的水平分辨率,根据自己的具体修改 */

#define LCD_YSIZE      (320)  /* lcd 的垂直分辨率,根据自己的具体修改 */

#defineLCD_BITSPERPIXEL (16)  /* lcd 颜色深度*/

#defineLCD_CONTROLLER    (-1)  /* lcd 控制器的具体型号,下面细讲*/

#defineLCD_FIXEDPALETTE  (565)   /*RGB 颜色位数*/

#defineLCD_SWAP_RB       (1)   /*红蓝反色交换*/

#defineLCD_INIT_CONTROLLER()   TFT_Init();    /*这里源代码是 LCD_Config() ,本设计中将其改为自己编写的显示器初始化函数是TFT_Init 即可*/

#endif

2)       GUIConf.h 文件修改
这里是ucGUI一些功能的配置,0 是关闭,1 是打开;
按照本次设计的需求代码配置如下:
#ifndefGUICONF_H
#define GUICONF_H
#define GUI_OS   (0)   /* 操作系统的支持,当用到ucos系统移植时需要打开*/
#define GUI_SUPPORT_TOUCH  (1)   /* 触摸屏的支持,这里我们需要用到,选择打开*/
#define GUI_SUPPORT_UNICODE  (0)   /*  初始关闭,如果使用汉字库设置为1*/
#define GUI_DEFAULT_FONT &GUI_Font6x8   /* 自定义显示字体大小*/
#define GUI_ALLOC_SIZE  5000   /* 分配的动态内存空间 */
#define GUI_WINSUPPORT  1   /* 窗口功能支持 */
#define GUI_SUPPORT_MEMDEV  1  /* 内存管理 */
#define GUI_SUPPORT_AA  1  /* 抗锯齿功能,设置为打开,可提高显示效果 */
#endif

3)       GUITouchConf.h文件修改

这里是GUI触摸屏的一些设置;
#ifndefGUITOUCH_CONF_H

#defineGUITOUCH_CONF_H

#defineGUI_TOUCH_AD_LEFT    3900        //最左方的AD值

#defineGUI_TOUCH_AD_RIGHT   200                  //最右方的AD值

#defineGUI_TOUCH_AD_BOTTOM  3900    //最下方的AD值

#defineGUI_TOUCH_AD_TOP     280         //最上方的AD值 

#defineGUI_TOUCH_SWAP_XY    1

#defineGUI_TOUCH_MIRROR_X   0

#defineGUI_TOUCH_MIRROR_Y   1

#endif

4)     LCDWin.c文件修改

这里是修改一些LCD的驱动函数,这样才能使ucGUI能够顺利的找到LCD 的底层驱动并且进行调用。

具体修改如下:

1.     打开LCDWin.c文件,在头文件中加入”#include “ili93xx.h”。

2.     将源代码中的预处理命令#if (LCD_CONTROLLER == -1) && (!defined(WIN32)|defined(LCD_SIMCONTROLLER)) 中 后 半 部 分 的 删 掉 ,改为 #if(LCD_CONTROLLER == -1)即可,如果不这样修改会使整个LCDDummy.c 文件都不会编译。

3.     在文件中找到 void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)这个函数(转换成有逻辑的物理坐标),把其中函数去掉,添加一个自己在ili93xx.h里自己定义的画点函数;void ili9320_SetPoint(xPhys, yPhys ,PixelIndex);。

4.     找到unsigned int LCD_L0_GetPixelIndex(int x, int y) 在其函数中添加读点函数PixelIndex =LCD_ReadPoint(x,y)。

STEP4:添加LCD底层驱动文件“ili93xx.c”和“ili93xx.h”到工程文件GUI-LCDDriver 文件夹下;

STEP5:保存并执行编写的程序,调试至无误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值