UCGUI移植基础篇(1)--Keil5下STM32移植及简单图形绘制
来源:互联网 发布:js onready 编辑:程序博客网 时间:2024/05/22 05:23
首先声明,本文章所写内容主要参考百度文库翟中康同学《基于STM32的UCGUI移植解析(新手入门)》,根据作者实际操作所得,仅供大家参考。
既然是做移植,开发板和液晶底层驱动大家肯定都是有的,这里不再赘述,但还有一样东西是必须要准备的---ucGUI源代码,这里,我把我用的源码给大家,有需要的可以直接下载http://pan.baidu.com/s/1eQxT3Nk。
1)源码中有很多文件,对于仅做简单图形绘制的我们来说,很多都是用不到的,只需其中的三个文件夹即可GUI、Config、GUI_X。在你的工程文件夹下创建ucGUI文件夹,用于存放跟GUI有关的所有文件,将源代码Start文件夹下GUI和Config两个文件夹以及源代码Sample文件夹下的GUI_X文件夹复制到ucGUI,至此,本文所用到的跟ucGUI有关的全部文件已添加进入工程。
2)创建Keil工程,相信能做移植的朋友,对此都很熟悉,具体操作不再赘述,有疑问的话可以翻看一下我之前写的操作步骤。个人习惯不同,创建的工程风格也不一样,这里,我介绍一下我的工程:
简单介绍一下各个Group里的内容:
code:主要是main函数和启动代码,由于现在用的是Keil5,启动代码自动生成,不需要手动添加,所以code下只有main函数。
SDU:主要是自己写的各模块的函数文件,比如延时函数、定时器、中断等等,当然,本文要用到的液晶驱动就在此组(有人喜欢把液晶驱动放到LCDDriver里,纯属个人习惯,不影响ucGUI正常工作)。
Lib_F1:STM32的库函数,不用多做解释。
GUI_Config:此处需特别强调一下,为了方便,我不仅把ucGUI下Config里所有的头文件包含进去,还添加了GUI_X下GUI_X.c文件。
GUI_Core:包含ucGUI/GUI/Core下所有的.c文件(为了防止编译出现不理解的错误,把所有的.c都包含进去了)。
GUI_LCDDriver:包含ucGUI/GUI/LCDDriver下所有的.c文件。
GUI_Font:包含ucGUI/GUI/Font下所有的.c文件。
GUI_ConvertColor:包含ucGUI/GUI/ConvertColor下所有的.c文件。
GUI_Demo:此处为我自己写的GUI任务函数,同时我也将GUI_Demo文件夹添加进ucGUI。
3)各组添加完成之后,现在就要进行底层函数和ucGUI函数的链接以及ucGUI的配置,此处对我们初学者来说,可能看起来很麻烦,但是最基本的内容其实是很简单易懂的,在此只介绍最基本的内容。
函数链接:ucGUI需要调用液晶驱动中的两个函数(写点和读点),这两个函数是我们在液晶驱动中自己写好的,只需添加到ucGUI中即可,我这两个函数分别为
void LCD_DrawPoint(u16 x,u16 y,u16 color); uint16_t LCD_ReadPoint(u16 x,u16 y);大家的底层驱动函数名可能不同,不过无所谓,功能一样即可。
一、链接写点函数,打开GUI_LCDDriver下的LCDDummy.c文件,找到void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)函数,添加写点函数:
二、链接读点函数(本文所进行的图形绘制其实没有用到读点,不链接读操作也可以),打开GUI_LCDDriver下的LCDDummy.c文件,找到unsigned int LCD_L0_GetPixelIndex(int x, int y)函数,添加读点函数:
ucGUI配置(此处参考翟中康同学所写文章):
一、 修改GUI_Config / GUIConf.h文件
#define GUI_OS (0)
#define GUI_SUPPORT_TOUCH (0)
#define GUI_SUPPORT_UNICODE (0)
#define GUI_DEFAULT_FONT &GUI_Font6x8
#define GUI_ALLOC_SIZE 5000 #define GUI_WINSUPPORT (0)
#define GUI_SUPPORT_MEMDEV (0)
#define GUI_SUPPORT_AA (0)
其余部分不需要改动
二、修改GUI_Config / LCDConf.h
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE (800) /* 水平分辨率X-resolution of LCD, Logical coor. */
#define LCD_YSIZE (480) /* 垂直分辨率Y-resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL (16) /*lcd 颜色深度*/
#define LCD_CONTROLLER (-1) /*lcd 控制器的具体型号*/
#define LCD_FIXEDPALETTE (565) /*RGB 颜色位数*/
#define LCD_SWAP_RB (1) /*红蓝反色交换*/
#define LCD_INIT_CONTROLLER() TFT_LCD_Init(); /*底层初始化函数(自己写的)而非源码自带这一步非常重要*/
#endif /* LCDCONF_H */
其余部分删除
至此,UCGUI的链接和配置结束,接下来即可进行简单图形绘制。
- UCGUI移植基础篇(1)--Keil5下STM32移植及简单图形绘制
- UCGUI 移植 STM32 带触屏
- stm32 UCGUI 完美移植
- stm32 ucgui无触屏移植
- stm32移植ecos,移植ucgui到ecos
- uCGUI在STM32开发板上的移植及优化
- 基于stm32的 ucGUI 12864下的移植
- ucGUI 12864下的移植
- STM32学习——uCGUI移植
- UCGUI+触摸在STM32上的移植
- uCGUI 5.22 在stm32 上的移植
- 在STM32上移植ucGUI之触摸屏
- STM32 UCGUI 移植 自我学习总结
- STM32学习——uCGUI移植
- 基于mini2440的ucgui图形库移植
- ucgui 移植
- ucGUI 移植
- ucGUI移植
- Http状态码
- Android开发人员需要具备的知识(很全)!
- win8重新激活
- 看好你的门-确保验证机制的安全(1)-使用可靠的敏感信息
- 安装PostgreSQL数据库(Linux篇)
- UCGUI移植基础篇(1)--Keil5下STM32移植及简单图形绘制
- kubernetes-ubuntu集群部署
- 看好你的门-确保验证机制的安全(2)-安全处理敏感信息
- blog内置变量
- 看好你的门-确保验证机制的安全(3)-正确处理验证信息
- FFT原理与实现
- 【Android文档】Training-------Adding the Action Bar
- 向要素集中插入新要素
- 从tty到uart层,分析uart数据流程(一)