UCGUI移植教程_第1页
UCGUI移植教程_第2页
UCGUI移植教程_第3页
UCGUI移植教程_第4页
UCGUI移植教程_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、UCGUI在STM32上移植教程1说明开发板芯片型号STM32F103VET6板载液晶型号ILI9341所需准备资料 UCGUI3.9 0源码一个工程模板为了节约时间,此处所用模板为野火M3工程模板(3.5.0)制作时间-2013-08-07By NUAA-Kylin2移植过程讲解2.1首先打开工工程模板,页面如下,这个模板工程很简单2.2在工程模板中新建两个文件夹2.2.1 命名为 GUI 与 Mylib修改日期2013/B/6 20:41.FWlib2D13/B/6 20:41GUI2013/8/6 20:4&Luting2013/8/ft 20:41Mylib2013/S/7 1

2、0:34Output2013/8/7 11:3&USER2013/S/7 W;542.2.2在GUI文件夹下添加以下内容名称修改日期AntiAli 百 52013/S/6 2 心.Config2013/S/6 20:42ConvertColor2013/8/6 20;44ConvertMono2013/8/6 2644Core2013/S/6 20:44Font2013/8/6 20;44GUI.X3013/8/6 20:46JPEG2013/S/6 20:44LCDDriver2013/8/7 10:42Mem Dev3013/S/6 20:44Multi Layer2013/8/6

3、 20:44Widget2013/8/6 20;44WM2013/£/6 20:44上述图片为UCGUI3.9 0源码中的一些文件夹进入UCGUI3.90源码文件夹/Start,将Config文件夹原封不动的拷过来进入UCGUI3.90源码文件夹/Start/GUI文件夹,将其中所有文件夹拷过来在GUI文件夹下新建 GUI_X文件夹,进入UCGUI3.90源码文件夹/ Sample/ GUI_X文件夹 中,如果带操作系统应该拷贝 GUI_X_uCOS.c如果不带操作系统拷贝 GUI_X.c,在这里 我们将将GUI_X.c拷贝到新建GUI_X文件夹。2.2.3各文件夹说明1) Anti

4、Alias : 9个C文件,主要用于抗锯齿的显示效果。2) ConvertColor:彩色显示的色彩转换支持。3) ConvertMono : (b/w )和灰度显示的色彩转换支持。4) Core:核心文件,提供了 GUI基本的功能。5) Font:字库。6) JPEG图片操作函数。7) LCDDriver: LCD驱动程序8) MenDev: Memorydevice支持。这个东西可用在很多情况下,但最主要的功能是防止在项目重叠时,防止屏幕的闪烁。9) Widget:窗体控件库。10) WM :窗口管理库。11) Config:配置文件。12) GUI:源代码。13) GUI_X操作系统接口

5、函数。2.3添加组及源文件2.3.1将GUI文件夹下的所有文件夹添加到GROUP右键工程工程项目名选择manage components将这些组全部添加上如图2.3.2 然后除了 LCDDriver以及 Font 不 Add Files其他的都将对应文件夹下的内容添加进来原因如下:因为不同液晶需要不同的驱动,字体的话也是自行选择。完成后如下图所示EJ lid Target 1由勺 由口3 口3 aE口由£ 电口i1白百口+i £& O由们STARTUPCODE USER Config LCDD river FWlib ConvertColor CMSIS AntiA

6、lias Cort ConvertMono Font MtmD&v VjItiLayer Widget WM GUI X010/*C) COPYRIGHT 201202 t * 文件名:main -c03 i 描述 :用家八。版本建的工程模板.04 | *实验平台,署火SOO2开发板|05 E * 鹿皈去 I ST3,5,0预。6*-*-*#-*07 tinclud nstn3?f13k.08 tincludGTJI .hn09 LtincludeFSMC,hR1。 int12 /131415 /Min 1 voidGPIO_LCD(;F5HC_LCD_Init(;GUT_Init(&

7、gt;LCD LO DrawHLine (30f 50,70;亩口 Mylib16 while(1);17 L,*日;一 T-t Q 1 921(C) COPYRI&HT 2012 1File Edit ViewProjectFlash DebugPeripherals Tools 5VCSWindow Help: tf Q 0|Jt令rflh| ifta m厚M於辰|Targ et 1ProjectJ bsp.ili9341 lcdz Q LCD.GULC平_1 bspjli9341_kd.h2.3.3添加头文件路径2.3.4完成以上操作之后开始编译因编译时间较长,编译过程中将 Co

8、nfig组下的GUIConf.h改成如下图所示,初步移植,这些 功能可以先关掉,修改内容如图GUICOHF_HGVICOHFHOTIOS10)/* Cnry 11 cfaefmeSDl'伊 uppoRir._TOUC!HLG)L Suppcrt#atfiKeULI_:泗阪匕UnicodeLG)/ Suppc r*tdefineGUIDEFAULTPONTGGUI即I ALLOC/faefine ECI A1LDZ SIZEwir-h ir-1 -11 a 3 ci n. j support el "tcQch asr-en Itc3. Tsrin-rwaTi mutets A

9、SC11 / UN I CODE t-rlrijsaefimeIE。 L Sig cfL021*1021ynasilC mtntwry .« v F#T 祀 SindH心tikWFSize cf oyn am c: TTurincr . . . For W*M and ireirory dev ice 3*/Centi|irjr5ci!5n of 冷writable poickgesidefine la-ef meGUIINSUPERTGUl2st;PPOElt_HEHDEV0UI9UPPORT"AAD /* Window manager Fac-rag- svail sb

10、le *7Q /*ftailadt *70 /* Ant.1 ialiaainfl available */另外将Config组下的GUITouchConf.h改成如下图所示2.3.6错误解决Gurraicn_coNF_H# de fine GUITCXJ 二已-匚。14一日*define GUI_TOUCH_iD_LE = T 2 0+define G7I_TCUCH_AD_RIGUI 2Q* de fine GU1:1tQUGhsw5fJEY 1*define GUl2T0ncHZMIRR0R_X 0define GU工TQUUh吊工1tendif L GUITQUCH_CONF_?i *

11、7其他部分删掉将Config组下的LCDConf.h改成如下图所示代髯卷餐*鞅*耆髯壬 *弯 壹# -ft痹*告看看和 背焉 族鹭 壹 俾世南S散老世鸯* *:震卷* 蚩 * 寿黄色髯承张General corfigura11dh of LCC*F* *rKrK rkK* = *KFKrK - K ' 一 - *#ceCine DCD_xsrEi(£4。)#gcfine LCD_r3LZE(320>/#dcfine LCD_3I7SFERP:XEE- (3) #define款晶调色板拊涌i液晶调色坂曲LCD BI7SPERPXEL (J6液晶词色板“位技制模式4 -f-

12、. 一户 irp-: 一尸#define#defineLcp_"nirr3O7. tt b e 妃LCnTTXF 1 r .ETTEERE)lcdFswaprs LClTrNIT-C0N7R0LlEE f 111931 Inizializtion H液晶调色板的型号液晶词色板裕式红蓝反色交捧"TFT初始化至靠;referred t颂 丁=_奘:臬坦ult.Q .工 SetUHEnry (zefetrtl i. gm 3etlutenizy,o). 二一为tZ;f;i.J:_5et?ix?Knce( r*fe:rej :rcc ijpiielinzsi-oi,:_:;:小Rl

13、jt.苏free Izi.:.H Dza-.15 (rAird frilni ld.c.匚阪 iiefenej 5rcr lod.o .:referred fruit Lo丸H_0n refened ficin 1:1.3hLO XctH.11 (icfaied iiai W.i .工 Cra'iVLL"?,:典史翌己 fn Lei 在:?in. 二访日工Ctx UfUHX ;ICL ;#endif /* LCDCONF 3 V2.3.5编译完发现存在很多错误如下图所示,不过还好错误都是一些未定义的.: "r;: L£N其:卫他占三也览划匕印 .ktp&#

14、39;it''57y;2-CM.aif: 土二二 L6218E:上:hfirM ajuiljcl 二即L既泊 Bsk出依 丁河ol 血 r.-.3Qtpct5W2-DEKC.eXt: Emn: U21£I:住fg 乳址口二 ",&§*:!引2乂由航;ir:r: L2L:; Tidtfiisc 3ibcl ICL .j3ccptrSIM32-HEM0.aaft 土*土 吏! LMimfi二统 sjTbcl 1 二 ,二倾1瞄41»函;Eiror; liM; Uhdefiiitd sx: 10): .tpzt5W2-DEHC.f: E

15、ei: L6215E: UM=firec 我址H 13、皿.皿 Eriai: L621HE: Undefined synibaL IXX 充邛H槌卫父-DE皿剖t:爻墅兰L5213E: l'*d=fi*5d ZT:二pt'TIADaiD.Exf: 土翼二 L乱HE:匕拒fi二M 5tajl 1CD .打顷盅耶MEH:.诚;士希:L获 由比沽为M;.莫'首先看第一个错误,缺少字体文件,所以右键组Font将Font文件夹下的Font6x8.c添加进组其他未定义的内容有:LCD_L0_SetLUTEntryLCD_L0_SetOrgLCD_L0_SetPixelIndexLC

16、D_L0_DrawBitmapLCD_L0_DrawHLineLCD_L0_FillRectLCD_L0_InitLCD_L0_OnLCD_L0_XorPixelLCD_L0_DrawVLineLCD_L0_GetPixelIndex解决方法:在GUI/LCDDriver/目录下新建一个 LCD_GUI.c文件,并添加到组LCDDriver当中,由于这些错 误都是未定义的,所以我们新建这样一个文件进行定义点击菜单栏Edit选择find in files找到函数声明的位置, 会发现这些定义都在LCD_protected.h当中,将他们拷贝出来,放入LCD_GUI.c文件当中int LCD_L0_

17、Init (void)/要有返回值,不然编译报错可以写return 0;void LCD_L0_SetLUTEntry (U8 Pos, LCD_COLOR color)void LCD_L0_SetOrg (int x, int y)void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)void LCD_L0_DrawBitmap (int x0, int y0, int xsize, int ysize, int BitsPerPixel, int BytesPerLine, const U8 GUI_UNI_PTR * pData,

18、 int Diff, const LCD_PIXELINDEX* pTrans) void LCD_L0_DrawHLine (int x0, int y0, int x1)void LCD_L0_FillRect (int x0, int y0, int x1, int y1)void LCD_L0_On (void)void LCD_L0_XorPixel (int x, int y)void LCD_L0_DrawVLine (int x, int y0, int y1)unsigned int LCD_L0_GetPixelIndex (int x, int y)2.3.7液晶驱动程序

19、由于不同液晶的驱动程序不一样,所以直接拷贝对应液晶的驱动程序即可这里我直接拷贝野火教程中自带的液晶驱动程序bsp_ili9341_lcd.h, bsp_ili9341_lcd.c到LCDDrivei件夹的当中并添加到组LCDDriver当中并在LCD_GUI.c文件中添加下列头文件#include "LCD_Private.h”#include "GUI_Private.h”#include "bsp_ili9341_lcd.h"完成这些任务后就离成功不远了2.4 Mylib文件夹内容添加2.4.1添加自己以前编好的底层函数如我这边有添加如下函数,其实刚

20、开始移植加不加都无所谓名称3| celay.c 一I oehy.h J GPIO-c词31.3SPLcSPLhusartxosart.lh修改日期太小2011/10/4 &:02C文件2 KB2011/10/4 8:02H翊1 KB2012/7/3S 182C文件5 KB2011/8/19 12:48H文件1 KB2011/10/4 8:02(:支律g kb2011/10/1 8:02H立件3 KB2011/10/4 &:02C文件1 KB2011/10/4 &:02H文件1 KB2.4.2新建文件夹FSMC另外在Mylib再新建下一个文件夹 FSMC进行配置,不过已经

21、配置好了,在附件可添加函数 当中,拷贝过来即可,并将内容添加到组Mylib当中(FSMC说明:FSMC(Flexible Static Memory Controller,可变静态存储控制器 )是 STM32 系列 中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制 机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静

22、态存储器,满足系统设计对存储容量、 产品体积以及成本的综合要求。) 最后组视图如下:曰一背GU1X i-E GULX.c由-陌Mylib固固a固® -回s;b!.FJ.:S-FSMC-cGPlOxSPLc usart.c 在main函数当中添加头文件说明#include"GUI.h”#include"FSMC.h”#include"LCD_Protected.h"这个时候编译不会再出现错误,不过具体的功能未能实现2.5函数功能添加在bsp_ili9341_lcd.c文件中查找相应的函数加入到LCD_GUI.c当中,下面举两个例子,其他的自行添加,如下方截图5l#inalude "LCD Piivate.h"#include w(jUI_Fiivatshn-finclude3int LCD_LO_Init (void 一 一bsp InitLCC (J;retu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论