STM32移植UCGUI3.90笔记
在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笔记相关推荐
- micropython STM32移植笔记(一)
micropython STM32移植笔记(一) 首先,我是一个搞硬件的,说白了是做电路的,呵呵... 一直想学一些软件,只会搞硬件的工程师是没有灵魂的,画了7年的PCB板卡了,但是每次调试硬件都要求 ...
- 基于STM32四轴飞控制作笔记
基于STM32四轴飞控制作笔记 前言 大四选了个四轴飞控作为毕业设计的题目,近来没事,把之前的制作做个总结开源出来. 硬件设计 1.遥控MCU模块和飞控的MCU模块都采用stm32f103c8t6单片 ...
- STM32 HAL库学习笔记1-HAL库简介
STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...
- STM32 HAL库学习笔记2 HAL库介绍
STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...
- 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 ...
- 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 ...
- contiki STM32移植
1.contiki简介 [2016年6月更新 强烈建议各位使用arm-none-eabi-gcc工具链,推荐在Instant Contiki中开发Contiki应用,不推荐使用IAR] "C ...
- 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么
嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...
- STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)
STM32 Cube MX学习笔记--TOF 高速单线激光雷达 L10_串口中断通信 1. TOF 高速单线激光雷达 L10 2. STM32 Cube MX配置 3.代码配置 4.编译 烧录 显示 ...
最新文章
- Python之向日志输出中添加上下文信息
- ASP.Net网站文件类型大全
- Memory and Crow
- 以当天日期时间,打包目录
- 开源绘画应用 Pinta 已移植到GTK 3和.NET 6
- Oracle入门(五D)之如何设置show parameter显示隐含参数
- 仓库移动_移动式RFID仓库管理解决方案,智能仓库未来应用的会更广泛
- 平流式沉淀池表面负荷怎么计算_沉淀池表面负荷
- 寻找中项和第k小元素c语言,分治法第k小元素poj2104.ppt
- jq使用教程05_ 新手也能用的安装版本,30秒点选即可安装完成,不需配置Python环境
- 自主可控计算机大会2019,荣科科技受邀参加2019自主可控计算机大会
- mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
- APP开发用什么框架最好?这5大框架,开发者必备神器
- Pyserial库使用心得
- Vue 移动端 股票 分时 K线
- 吉首大学2019年程序设计竞赛(重现赛)
- 常见ERP软件简单介绍与个人评价
- 台湾大学林轩田机器学习技法课程学习笔记7 -- Blending and Bagging
- 第一章:基本概念(博弈论、纳什均衡、维克瑞拍卖、POA、赞助搜索拍卖)
- [Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数
热门文章
- clion 查看内容窗口_苹果电脑(macOS)查看 WiFi 密码的两种方法
- java socket 浏览器_Socket实现Java和浏览器交互。
- 抽象类和接口的共同点和区别
- eclipse 安装git
- 谷粒商城---新增收货地址,设置默认地址实现
- mac 上mysql_connect_Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)...
- vue-router 路由跳转
- 虚拟环境创建,pip管理包
- js获取当前时间格式YYYY/MM/DD
- windows service 2008 内存吃尽解决方案