使用环境(蓝色粗体字为特别注意内容)
1、软件环境:Keil MDK 5.15
2、硬件环境:STM32F103C8T6最小系统,ST7735 1.44寸TFT LCD
3、参考文献:http://blog.chinaunix.net/uid-361890-id-2981509.html
上一篇文章里面写了TFT彩色LCD液晶屏的驱动方法,在本文中顺便记录一下移植UC-GUI的过程。我们知道,UCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。 UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。UCGUI能够适应大多数的使用黑白或彩色LCD的应用,它提供非常好的允许处理灰度的颜色管理。还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系。
往往做产品的时候,需要有良好的用户交互界面,而UC-GUI就给我们提供了很大方便。移植起来也非常的简单,整个图形库纯C语言编写,有着良好的可移植性,经过简单的配置,几乎能够运行于任何平台,而且不需要操作系统支持。首先大概介绍uc-GUI的基本工作原理:
说白了就是在液晶屏的驱动中的画点函数套了一层壳,这层壳能够方便的生成窗体、控件等桌面UI元素。所以移植UC-GUI首先要做的就是先把液晶屏驱动起来,能够实现在任意一个点绘制任意颜色。因为点能构成线,线能构成面,所以画点是最基础的,当然后面可以做一下优化,比如画线可以不用一个点一个点的画,这样想想就知道很浪费时间,如何优雅地绘制点、线、面这将在很大程度上影响整体的性能。虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。但是目前来说只有UCGUI3.90a版本的代码是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模块。要做一个数码相册,JEPG模块自然少不了,可以试试移植这个版本,但是鉴于笔者没有找到该版本的资源下载,只找到了3.98版本,凑合着用吧~~~~。好了,废话少说,下面我们来看一下大概的移植过程。
基本流程:先修改(移植),后编译,一定要按照这个顺序,否则你会遇到各种编译报错,因为Config.h中有些开关,比如默认使用ucos、默认支持触屏等需要根据需要修改,不改的话可能会把相关模块编译进去,这时候就可能少东西了!本工程只是作为一个示例,移植了基本ucgui组件,不包含os以及触屏!
Step1.下载源码,认识UC-GUI
E:.
└─uC-GUI
├─Doc
├─Sample
│ ├─Application
│ │ ├─Dashboard
│ │ ├─NEC_BuildingManagement
│ │ └─NEC_Pingpong
│ ├─GUI
│ │ ├─VSCREEN_MultiPage
│ │ └─WIDGET_Checkbox
│ ├─GUIDemo
│ ├─GUI_X
│ ├─LCDConf
│ │ ├─LCD0323
│ │ ├─LCD07X1
│ │ ├─LCD1200
│ │ ├─LCD13701
│ │ ├─LCD1611
│ │ ├─LCD161620
│ │ ├─LCD1781
│ │ ├─LCD501
│ │ ├─LCD6331
│ │ ├─LCD66750
│ │ ├─LCD667XX
│ │ ├─LCDColorOnMono
│ │ ├─LCDFujitsu
│ │ ├─LCDLin
│ │ ├─LCDLin32
│ │ ├─LCDMem
│ │ ├─LCDMemC
│ │ ├─LCDPage1bpp
│ │ ├─LCDPage4bpp
│ │ ├─LCDSLin
│ │ ├─LCDVesa
│ │ └─LCDXylon
│ ├─LCD_X
│ └─MakeLib
│ ├─8051_Keil
│ ├─ARM_GNU
│ ├─ARM_IAR
│ ├─M16C_NC30
│ ├─M16C_TASKING
│ ├─M32C_NC308
│ ├─MC80_IAR
│ ├─MSP430_IAR
│ ├─V850_GHS
│ ├─WIN32_MSVC60
│ ├─WIN32_WATCOM
│ └─X86_WC16
├─Start
│ ├─Application
│ ├─Config
│ ├─GUI
│ │ ├─AntiAlias
│ │ ├─ConvertColor
│ │ ├─ConvertMono
│ │ ├─Core
│ │ ├─Font
│ │ ├─LCDDriver
│ │ ├─MemDev
│ │ ├─MultiLayer
│ │ ├─Widget
│ │ └─WM
│ └─System
│ └─Simulation
│ ├─Res
│ ├─SIM_GUI
│ │ └─Branding
│ └─WinMain
└─Tool
1)“tool文件夹”是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的.
2)“sample文件夹”下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能.
3)“Start文件夹”里面,这是我们最主要的文件夹.里面就包含了uCGUI的源代码,uCGUI的作者把源代码放进vc里面进行编译了(当然,这是用标准C语言写的程序,所以我们可以放在任何C语言平台下编译而不会担心兼容性问题,这个uCGUI在这方面做的算是完美了),所以,我们可以在vc平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了。
Start文件夹”目录内容:
1)Confi