在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

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

#endif   /* Avoidmultiple 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
由于网络的原因,稍后将整个工程上传上去,以及显示效果。呵呵 欢迎拍砖!

STM32移植UCGUI3.90笔记相关推荐

  1. micropython STM32移植笔记(一)

    micropython STM32移植笔记(一) 首先,我是一个搞硬件的,说白了是做电路的,呵呵... 一直想学一些软件,只会搞硬件的工程师是没有灵魂的,画了7年的PCB板卡了,但是每次调试硬件都要求 ...

  2. 基于STM32四轴飞控制作笔记

    基于STM32四轴飞控制作笔记 前言 大四选了个四轴飞控作为毕业设计的题目,近来没事,把之前的制作做个总结开源出来. 硬件设计 1.遥控MCU模块和飞控的MCU模块都采用stm32f103c8t6单片 ...

  3. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  4. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  5. 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 ...

  6. 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 ...

  7. contiki STM32移植

    1.contiki简介 [2016年6月更新 强烈建议各位使用arm-none-eabi-gcc工具链,推荐在Instant Contiki中开发Contiki应用,不推荐使用IAR] "C ...

  8. 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么

    嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...

  9. STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)

    STM32 Cube MX学习笔记--TOF 高速单线激光雷达 L10_串口中断通信 1. TOF 高速单线激光雷达 L10 2. STM32 Cube MX配置 3.代码配置 4.编译 烧录 显示 ...

最新文章

  1. Python之向日志输出中添加上下文信息
  2. ASP.Net网站文件类型大全
  3. Memory and Crow
  4. 以当天日期时间,打包目录
  5. 开源绘画应用 Pinta 已移植到GTK 3和.NET 6
  6. Oracle入门(五D)之如何设置show parameter显示隐含参数
  7. 仓库移动_移动式RFID仓库管理解决方案,智能仓库未来应用的会更广泛
  8. 平流式沉淀池表面负荷怎么计算_沉淀池表面负荷
  9. 寻找中项和第k小元素c语言,分治法第k小元素poj2104.ppt
  10. jq使用教程05_ 新手也能用的安装版本,30秒点选即可安装完成,不需配置Python环境
  11. 自主可控计算机大会2019,荣科科技受邀参加2019自主可控计算机大会
  12. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
  13. APP开发用什么框架最好?这5大框架,开发者必备神器
  14. Pyserial库使用心得
  15. Vue 移动端 股票 分时 K线
  16. 吉首大学2019年程序设计竞赛(重现赛)
  17. 常见ERP软件简单介绍与个人评价
  18. 台湾大学林轩田机器学习技法课程学习笔记7 -- Blending and Bagging
  19. 第一章:基本概念(博弈论、纳什均衡、维克瑞拍卖、POA、赞助搜索拍卖)
  20. [Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数

热门文章

  1. clion 查看内容窗口_苹果电脑(macOS)查看 WiFi 密码的两种方法
  2. java socket 浏览器_Socket实现Java和浏览器交互。
  3. 抽象类和接口的共同点和区别
  4. eclipse 安装git
  5. 谷粒商城---新增收货地址,设置默认地址实现
  6. mac 上mysql_connect_Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)...
  7. vue-router 路由跳转
  8. 虚拟环境创建,pip管理包
  9. js获取当前时间格式YYYY/MM/DD
  10. windows service 2008 内存吃尽解决方案