您的位置 首页 技术

stm32之uCGUI移植

声明:本教程是作者学习uCGUI过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。如需转载,

声明:本教程是作者学习uCGUI进程中的笔记,最终整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。如需转载,请注明出处。

阐明

渠道: stm32f103zet6

TFTLCD类型: 2.8寸9341控制器

ucgui源码: 3.90a版别

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

操作系统: 不支持

移植教程

一、预备工作:

(一) 源码:预备3.90版别的UCGUI源码

注:假如需求跑GUIDEMO,那么还需预备GUIDEMO源码。

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

1、 设置坐标点;

static void lcd_set_cursor(u16 xpos, u16 ypos);

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

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

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

u16 lcd_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_SIZE 40*1024
#define GUI_WINSUPPORT0
#define GUI_SUPPORT_MEMDEV 1
#define GUI_SUPPORT_AA 1

(五) 翻开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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/259248.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部