ucGUI移植笔记-完善版 下载本文

内容发布更新时间 : 2024/5/7 19:28:31星期一 下面是文章的全部内容请认真阅读。

ucGUI移植笔记完善版

最近在弄ucGUI的移植,网上搜了不少资料,也问了同学,总算把简单的一个程序弄好了,也感谢openedv论坛和hua290565456的网友,看了他的贴子,才恍然大悟弄好。

该程序是直接用的原子大哥的TFTLCD显示的例子,直接拿过来移植的,感谢原子大哥的程序,在我学习STM32的旅途上帮助我不少。

所用到的是原子大哥TFTLCD例子(库函数版本)和ucGUI3.90源码。

建工程就不说了,附件里有,相信大家也看到别人建的工程了,下面直接说重点。

补充说明:如果你移植的时候怎么也不成功,大部分原因是GUI无法初始化LCD。考虑两方面的原因:

一、你写的底层驱动程序;

二、底层驱动程序与GUI系统的接口,即GUI的配置。

所有的问题几乎都是出现在这两方面,造成GUI无法成功调用正确的底层初始化程序。 所以:

1. 确保你的底层驱动在没有移植GUI之前,能顺序驱动LCD成功。

2. 然后,确保你的底层驱动接口没有与上层GUI有相同的公共的变量。可以有同名的变

量,但所有的变量都必须是私有的。也就是原子哥的那个结构体LCD不能在.h中定义。如果LCD驱动文件是lcd.c和lcd.h,最好改为别的名字,比如ili93xx.c和ili93xx.h。然后还要把LCD_Init()初始化函数改为LCDx_Init();因为GUI系统已经有名为LCD.c的文件和LCD_Init()的函数。总而言之,确保你的底层的接口文件(xx.h)没有与上层同名的公共变量。

3. 修改GUI系统与底层的接口:

A. LCDConf.h中按照下面的图就行,其余的可以删除掉,一定要删除其他的,因为有相同的LCD_CONTROLLER定义,会造成硬件出错而进入硬件出错中断死循环。注意红框中是刚刚改过的LCD初始化函数,改为刚刚更改的初始化函数就行。

B. 接下来是GUIConf.h中的设置,目前只是用到简单的一个现实函数,多以就全部设

为0

C. 然后是LCDDummy.c。这个是LCD驱动函数的修改,这三个最好改红框选中的文

接下来就是更改的第一块,首先的把第1部所更改的相应的LCD底层函数的头文件加进来,不然ucGUI没办法正常工作。然后就是第二个红框给为自己的驱动芯片型号。

再就是第二块,找到画蓝线的两个函数,用方框里的函数取代,如果是用原子大哥的,第一个函数必须要用快速画点函数,因为函数参数里有颜色这个参数,画点函数没有,如果是别的程序,也是一样,加入画点函数就行,但必须要有颜色的参数。第二个函数就是读取某点的颜色值的函数,加进来就行,我这儿直接就用了原子大哥的程序。

需要强调的一点是,这些GUI与底层的接口的宏,必须正确书写,否则GUI无法与底层驱动成功连接。

4. 最后修改主函数