在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!)
移植步骤:
第一步:首先,得把你的TFT底层驱动写好,既在裸机下,可以正常显示。
第二步:加入UCGUI程序包。
第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。)
        配置LCDConf.h文件如下:
        #ifndef LCDCONF_H
                #define LCDCONF_H
                #define LCD_XSIZE          (160)   //配置TFT的水平分辨率
                #define LCD_YSIZE          (128)   //配置TFT的垂直分辨率
                #define LCD_CONTROLLER     (54124) //TFT控制器的名称
                #define LCD_BITSPERPIXEL   (16)    //每个像素的位数
                #define LCD_FIXEDPALETTE   (565)   //调色板格式
                #define LCD_SWAP_RB        (0)     //红蓝反色交换
                #define LCD_INIT_CONTROLLER()   TFT_Init() ;        //此处需要定义的是你的TFT初始化函数                                                                                                                        
        #endif /* LCDCONF_H */

配置GUIConf.h文件如下:
        #ifndef GUICONF_H
        #define GUICONF_H

#define GUI_OS                 (1)  //多任务
                #define GUI_SUPPORT_TOUCH      (0)  //触摸
                     #define GUI_SUPPORT_UNICODE    (1)  //Unicode支持 
                #define GUI_DEFAULT_FONT        &GUI_Font6x8  //GUI默认字体 
                #define GUI_ALLOC_SIZE          5000  //动态内存的大小
                #define GUI_WINSUPPORT          1  //窗口控件支持
                #define GUI_SUPPORT_MEMDEV      1  //支持内存设备
                #define GUI_SUPPORT_AA          1  /* Anti aliasing available */

#endif  /* Avoid multiple inclusion */
第四步:最关键的一步。那就是让GUI能够找到你的LCD驱动。修改LCDDriver。
        在编写你的TFT底层驱动程序的时候,一定不能忘记编写这两个函数:设置一个像素和获取一个像素的颜色,因为后面很多UCGUI和你的TFT驱动关联起来需要这两个函数为前提。以我的TFT为例:
void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color) 
{
        ….

}

unsigned short LCD_GetPixel(unsigned short x, unsigned short y) 
{
   …

}
这两个函数写好,并测试可以正常显示后,接下来需要修改TFT与UCGUI关联的函数(在一个C文件下(我的是ili9320_ucgui.c),建议大家在移植GCGUI之前最好下载个别人移植好的例程,对着修改这样难度降低很多):
int LCD_L0_Init(void)
{  
  TFT_Init();
  return 0;
}
这个函数,是GCGUI初始化TFT需要调用的,里面的函数就是你TFT底层驱动的初始化函数。
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
  LCD_SetPixel(x,y,PixelIndex);
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
  return LCD_GetPixel(x,y);
}
上面两个函数是其他函数的最基本元素,其他函数比如画线、点、圆都需要调用改函数。里面的LCD_SetPixel(x,y,PixelIndex)、LCD_GetPixel(x,y);就是你TFT底层驱动设置像素和获取像素的两个函数。
紧接着把该ili9320_ucgui.c文件下其他函数修改一下(凡是遇到设置像素和获取像素的地方用以上两个函数代替。)
接着,修改另一个C文件(ili9320_api.c)这里修改很简单,仅仅也是将设置像素和获取像素的函数替换掉自己定义的即可。

最后,网上说需要修改那个GUI_X.c文件,由于我下载的是STM32模板(ILI9320的控制器),那个文件没有修改。
PS:我的开发环境MDK3.4以上版本,CPU:STM32F103RB  TFT与MCU接口:模拟总线8位 1.8英寸 160×128分辨率的TFT
UCGUI版本3.90    UCOS版本2.86  在原基础上仅仅修改了以下几个文件:ili9320.c
、ili9320_ucgui.c 、ili9320_api.c 、GUIConf.h、LCDConf.h
由于网络的原因,稍后将整个工程上传上去,以及显示效果。呵呵 欢迎拍砖!

(原文件名:QQ截图未命名.jpg)

STM32移植UCGUI3.90笔记的更多相关文章

  1. 【转】hurry_liu 大神STM32移植contiki入门之一:系统介绍和开发环境搭建

    前言: 由于项目的原因,需要在LPC1788(STM32 cortex-M3)上面跑contiki. 之前没有涉及到contiki,不知其为何物.不过这个不是难事,做IT的,每每遇到新事物,都不会处理 ...

  2. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题

    STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...

  3. Hello China操作系统STM32移植指南(一)

    Hello China操作系统移植指南 首先说明一下,为了适应更多的文化背景,对Hello China操作系统的名字做了修改,修改为"Hello X",或者连接在一起,写为&quo ...

  4. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  5. stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)

    STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...

  6. stm32寄存器版学习笔记05 PWM

    STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...

  7. stm32寄存器版学习笔记03 外部中断

    stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...

  8. STM32移植USB驱动总结

    https://blog.csdn.net/stm32_newlearner/article/details/88095944 stm32   移植usb驱动开发 单片机 STM32单片机和51单片机 ...

  9. STM32 移植 RT-Thread 标准版的 FinSH 组件

    一.移植准备 开发版STM32F10xC8T6 准备好移植RT-Thread的移植工程 没动手移植过RT-Thread的小伙伴,可以看RT-Thread移植到stm32 我这里是将控制台信息打印到串口 ...

随机推荐

  1. 省市数据递归加载到TreeView

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. stl中的map数据类型

    1.1 STL map 1.1.1 背景 关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素. 常见的顺序容器有:vector.list.deque.stac ...

  3. 【poj4011】Automated Telephone Exchange

    题目:Automated Telephone Exchange poj URL:http://poj.org/problem?id=4011 原题如下图: 题意: 就是一个三位数减去两个小于或等于99 ...

  4. iOS开发——时间格式类

    目前只实现了三个类方法, 第一个获取当前时间,以字符创的形式返回,例如"201606161532" 第二个以当前时间与给定时间的时间差(秒) 第三个以当前时间与给定时间的时间差(分 ...

  5. OpenGL9-(FreeImage)加载图片-作为纹理

    /*** 这个例子展示如何使用FreeImage加载图片作为纹理* 初学者,在学习OpenGL的时候,往往因为OpenGL读图片没有那么方便* 而浪费了大量的时间在研究图片格式上,其实大可不必. 1. ...

  6. Js 对象二

    一.Date对象 1.创建Date对象的方法 1)使用new关键字和Date类来创建(不带参数) Var today = new Date(); //不带参数 它是获取当前的系统时间 2)使用new关 ...

  7. ZigBee HomeAutomation分析

    引用请注明出处!联系邮箱是huhao0126@163.com 本例程讲解,基于TI CC2530-2.5.1a中的HomeAutomation文件夹中的SampleLight和SampleSwitch ...

  8. SAP第一轮面试之英语群面

    很高兴通过了SAP的笔试,昨天进行了一轮面试.SAP一轮面试是英语群面(无领导小组讨论) 面试提前大约五天的样子通知面试时间地点,一般是在公司,要求正装.这些都会在HR联系你时通知的,所以不再啰嗦. ...

  9. RHEL6.3 ftp服务器参数的戏说——不看白不看,看了不白看

    大家都知道ftp服务器的应用何止广,简直就是无处不在,配置简单的ftp服务谁都会,无外乎就是刚安装好ftp服务,一启动就ok了:或是达到简单的上传下载修改下/var/ftp/pub的权限,配合配置文件 ...

  10. [总结]Android系统体系结构

    Android 从图中可以看出Android主要的组成部分,其中底层是Linux的内核,包括的主要就是文件.内存.系统资源等的管理,Google在这部分的工作主要就是电源管理和一部分驱动,并且整合上层 ...