内容发布更新时间 : 2024/12/27 5:50:55星期一 下面是文章的全部内容请认真阅读。
关于uCGUI在STM32上的移植移详解
首先我们得知道啥是μC/GUI:
它是一种用于嵌入式应用的图形支持软件。它被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD 控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。
μC/GUI 适用于使用任何LCD 控制和CPU 的任何尺寸的物理和虚拟显示。
它的设计是模块化的,由在不同的模块中的不同的层组成。一个层,称作LCD 驱动程序,包含了对LCD 的全部访问。因为它100%由ANSI 的C 语言编写的,μ所以C/GUI 适用于所有的CPU。
我们知道windowsXP的操作界面,是通过窗口、按钮、等来对计算机进行操作,同样,我们所讲的uC/GUI也能实现类似效果。
在网上找了些教程,但是讲述的不够详细,导致我在移植过程中遇到了很多问题,自己重头开始自己一点点移植,遇到的问题也只能靠自己解决,终于在忙活了一天后把它搞定了。希望对初次进行移植的同学能有所帮助。下面是我的吐血总结:
所需工具:1、uC/GUI v3.90 尽量找到没有修改的源码
2、一个硬件开发平台、LCD底层驱动程序,我使用的是STM32F103ZE+TFT3.2寸LCD
3、MDK开发软件(就是Keil) 4、一个编译无误的工程模板 4、uC/GUI相关的中文手册 移植步骤:
第一步:首先,得把你的LCD底层驱动写好,既在裸机下,可以正常显示。 通常只需3个底层驱动函数: LCD_SetPoint(u16 x,u16,y,int color);//设置某点,及颜色 LCD_GetPoint(u16 x,u16 y); //读取某点及颜色返回
LCD_Init(); //LCD初始化硬件函数,这里改成其他名字如LCD2_Init();防止和uC/GUI冲突
第二步:向事先准备好的工程中加入uC/GUI文件夹,在工程设置中包含相应头文件
工程目录如下:
第三步:配置LCDConf.h、GUIConf.h、GUITouchConf.h(由于我没使用触摸功能,此配置在此不讲。)
配置LCDConf.h文件如下: LCD的设置 #ifndef LCDCONF_H #define LCDCONF_H
#define LCD_XSIZE (320) //配置TFTLCD的水平分辨率
#define LCD_YSIZE (240) //配置TFTLCD的垂直分辨率
#define LCD_CONTROLLER (-1) //为什么是-1?接下来讲
#define LCD_BITSPERPIXEL (16) //每个像素的位数
#define LCD_FIXEDPALETTE (565) //调色板格式
#define LCD_SWAP_RB (1) //红蓝反色交换
#define
LCD_INIT_CONTROLLER() LCD2_Init(); //此处需要定义的是你的LCD初始化函数
#endif /* LCDCONF_H */
配置GUIConf.h文件如下: 就是些功能开关而已 #ifndef GUICONF_H #define GUICONF_H
#defineGUI_OS (0) //是否支持多任务,我没使用uC/OS-II,所以设置为0
#define GUI_SUPPORT_TOUCH (0) //触摸 #define GUI_SUPPORT_UNICODE (1) //Unicode支持
#define
GUI_DEFAULT_FONT &GUI_Font6x8 //GUI默认字体 #defineGUI_ALLOC_SIZE 5000 //动态内存的大小
#defineGUI_WINSUPPORT 0 //窗口控件支持 ,这里不讲使用这些功能
#define GUI_SUPPORT_MEMDEV 0 //支持内存设备
#defineGUI_SUPPORT_AA 0 /* Anti aliasing available */
#endif /* Avoidmultiple inclusion */ 第四步:最关键的一步。那就是让GUI能够找到你的LCD驱动,修改LCDDriver。 在编写你的TFT底层驱动程序的时候,一定不能忘记编写这两个函数:设置一个像素和获取一个像素的颜色,因为后面很多 UCGUI和你的TFTLCD驱动关联起来需要这两个函数为前提。以我的TFT为例:
void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color) {
…. /*这里面是你的LCD具体驱动代码,根据自己的LCD设置*/ … /*功能实现设置某个位置点,及颜色。***************/