加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

ucGUI移植(工程源码+移植笔记)

2017/01/16
43
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

        最近在弄ucGUI的移植,网上搜了不少资料,也问了同学,总算把简单的一个程序弄好了,现在跟大家分享下心得。该程序是直接用的原子大哥的TFTLCD显示的例子,直接拿过来移植的。所用到的是原子大哥TFTLCD例子(库函数版本)和ucGUI3.90源码。

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

由于ucGUI移植笔记内容太多,就介绍其中几点(具体的还需看附件内容):

1. 如果LCD驱动文件是lcd.c和lcd.h,最好改为别的名字,比如ili93xx.c和ili93xx.h。然后还要把LCD_Init()初始化函数改为LCDx_Init();

2. 需要改的地方:

A. LCDConf.h中按照下面的图就行,其余的可以删除掉,注意红框中是刚刚改过的LCD初始化函数,改为刚刚更改的初始化函数就行。

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

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

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

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

3. 最后修改主函数

有人纳闷了,为什么把LCD初始化函数

给注释掉了,没关系,在前面

文件中不是有个宏定义嘛

这个宏定义已经在

这个文件中调用,见下图哦

还有一项特别注意的,如果你用原子大哥的LCD初始化函数,移植完后,你会发现你的屏幕先白屏一下之后就马上黑屏,而且后面无论设置什么颜色都是这样的情况。在调用GUI_Init()的时候,这个函数会进入LCD_Init(),然后再LCD_Init()函数里面有这样的语句
#if (GUI_DEFAULT_BKCOLOR != GUI_INVALID_COLOR)

/* Clear video memory */

LCD_SetDrawMode(GUI_DRAWMODE_REV);

LCD_FillRect(0,0, GUI_XMAX, GUI_YMAX);

LCD_SetDrawMode(0);

#endif

这句#if (GUI_DEFAULT_BKCOLOR != GUI_INVALID_COLOR)里面的GUI_DEFAULT_BKCOLOR 初值是OXFFFF, GUI_INVALID_COLOR 初值也是0XFFFF,而原子哥的初始化函数最后有一句LCD_Clear(WHITE);这样就把 GUI_INVALID_COLOR 的值设置成了0X0000;导致调用了下面的三个函数。从而出现上面的问题。只要把 原子哥 的初始化函数LCD_Clear(WHITE); 注释掉就不会错了,小问题大错误。这是引用的hua290565456的帖子里的话,觉得很有用,就粘贴过来了。

这就是一个基本的ucGUI的移植。该笔记放在附件了,有工程和源码,还有此贴的word文档。

  • UCGUI移植-战舰板子.rar
    描述:UCGUI移植-战舰板子
  • UCGUI3.90版源码.rar
    描述:UCGUI3.90版源码
  • ucGUI移植笔记.doc
    描述:ucGUI移植笔记

相关推荐

电子产业图谱