新闻中心

EEPW首页>嵌入式系统>设计应用> stm32之uCGUI移植

stm32之uCGUI移植

作者: 时间:2016-11-25 来源:网络 收藏
声明:本教程是作者学习uCGUI过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。如需转载,请注明出处。

本文引用地址: //m.amcfsurvey.com/article/201611/321348.htm

说明

平台:stm32f103zet6

TFTLCD型号: 2.8寸9341控制器

ucgui源码:3.90a版本

触屏:不带触屏(后续更新)

操作系统:不支持

移植教程

一、准备工作:

(一)源码:准备3.90版本的UCGUI源码

注:如果需要跑GUIDEMO,那么还需准备GUIDEMO源码。

(二)LCD底层驱动:准备LCD屏的底层驱动,接口函数如下:

1、设置坐标点;

staticvoid lcd_set_cursor(u16 xpos, u16 ypos);

2、在指定点画指定颜色的点;

void lcd_set_point(u16 xpos, u16 ypos, u16 color);

3、读取某个点的颜色值;

u16lcd_get_point(u16 x, u16 y);

4、在指定区域填充颜色(开窗口的方式,速度更快);

void lcd_window_fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 color);

5、LCD屏初始化(主要是出厂初始化代码);

void ili9341_initialize(void);

注:这里列出了和UCGUI的接口函数,这些函数的具体实现需要根据自己的LCD屏具体实现这些函数。

二、移植过程

(一)把UCGUI源码copy到自己的工程中,UCGUI文件夹下面,方便管理;

(二)添加UCGUI源码到工程中,放在对应的组下面,方便管理,如图:

(三)添加头文件路径,如图:

(四)打开GUI_Config文件夹,编辑GUIConf.h文件,内容如下:
#define GUI_OS(0)
#define GUI_SUPPORT_TOUCH(0)
#define GUI_SUPPORT_UNICODE(1)
#define GUI_DEFAULT_FONT&GUI_Font6x8
#define GUI_ALLOC_SIZE40*1024
#define GUI_WINSUPPORT0
#define GUI_SUPPORT_MEMDEV1
#define GUI_SUPPORT_AA1

(五)打开GUI_Config文件夹,编辑LCDConf.h文件,内容如下:
#define LCD_XSIZE(320)
#define LCD_YSIZE(240)
#define LCD_BITSPERPIXEL(16)
#define LCD_CONTROLLER(-1)
#define LCD_FIXEDPALETTE(565)
#define LCD_SWAP_RB(1)
#define LCD_INIT_CONTROLLER()ili9341_initialize();

(六)打开GUI_LCDDriver文件夹,编辑LCDDummy.c文件,内容如下:

1、先添加LCD驱动文件的头文件,以便下面函数调用;如:#include "tftlcd.h"

2、确保#if (LCD_CONTROLLER == -1)
&& (!defined(WIN32) | defined(LCD_SIMCONTROLLER))
中的 LCD_CONTROLLER == -1 ,和LCDConf.h中的宏定义对应

3、在 void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 函数最后一行添加如下语句:
lcd_set_point(xPhys, yPhys, PixelIndex);

4、在 unsigned int LCD_L0_GetPixelIndex(int x, int y) 函数 return语句之前添加如下语句:
PixelIndex = lcd_get_point(x, y);

5、现在回到main函数

1)添加头文
#include "GUI.h"
#include "GUIDEMO.h"

2)在main函数中先调用必要的初始化函数后,再调用GUI_Init(); 函数,这个函数会调用LCD屏的初始化函数

3)为了测试UCGUI是否初始化成功,我们先调用几个函数试试,在GUI_Init();下面接着调用如下函数:
GUI_SetBkColor(GUI_BLACK);
GUI_SetColor(GUI_RED);
GUI_Clear();
GUI_SetFont(&GUI_Font24_1);
GUI_DispStringAt("- - uCGUI disp Function sample - -",4,10);
// 延时3s,方便观看结果
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
看看是否把LCD刷成黑色,是否显示红色字符串

4)然后再while循环中调用 GUIDEMO_main(); 函数,开始运行GUIDEMO


上一页 1 2 下一页

关键词:stm32uCGUI移

评论


技术专区

关闭