STM32F103移植UCGUI(µCGUI)(附示例工程)

本文档详细介绍了如何在STM32F103C8T6平台上移植UCGUI(µCGUI),包括软件和硬件环境设置、移植步骤、关键文件修改等内容。通过移植,可以为STM32F103C8T6添加图形用户界面,简化产品开发。移植过程涉及修改GUIConf.h、LCDConf.c、GUI_X.c和LCDWin.c等文件,确保LCD驱动和UCGUI核心功能正常工作。
摘要由CSDN通过智能技术生成

使用环境(蓝色粗体字为特别注意内容)
1、软件环境:Keil MDK 5.15
2、硬件环境:STM32F103C8T6最小系统,ST7735 1.44寸TFT LCD

3、参考文献:http://blog.chinaunix.net/uid-361890-id-2981509.html

UCGUI官网

上一篇文章里面写了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

uC-GUI-V3-98-完整源码未删减版本,内容很全面。文件目录列表 ─uC-GUI ├─Doc ├─Sample │ ├─Application │ │ ├─Dashboard │ │ ├─NEC_BuildingManagem │ │ └─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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值