最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

STM32自学笔记之uCGUI移植总结

来源:动视网 责编:小OO 时间:2025-09-30 08:22:36
文档

STM32自学笔记之uCGUI移植总结

uCUI移植总结做了两个星期终于把gui搞通了,现将移植方法总结如下,仅供学习交流之用。2014/8/23一、uCGUI移植步骤1、uCGUI及TFT驱动文件准备(1)将TFT驱动文件ili9320.h、ili9320.c及其字体文件ili9320_font.h复制至keil工程模板的文件夹中;(2)准备好uCGUI源文件(本例使用的版本3.90a),将START文件夹下的GUI文件夹全部复制到keil工程模板的文件夹中;再将START文件夹下的Config文件夹复制至GUI文件夹下;最后将S
推荐度:
导读uCUI移植总结做了两个星期终于把gui搞通了,现将移植方法总结如下,仅供学习交流之用。2014/8/23一、uCGUI移植步骤1、uCGUI及TFT驱动文件准备(1)将TFT驱动文件ili9320.h、ili9320.c及其字体文件ili9320_font.h复制至keil工程模板的文件夹中;(2)准备好uCGUI源文件(本例使用的版本3.90a),将START文件夹下的GUI文件夹全部复制到keil工程模板的文件夹中;再将START文件夹下的Config文件夹复制至GUI文件夹下;最后将S
uCUI移植总结

做了两个星期终于把gui搞通了,现将移植方法总结如下,仅供学习交流之用。

2014/8/23

一、uCGUI移植步骤

1、uCGUI及TFT驱动文件准备

(1)将TFT驱动文件ili9320.h、ili9320.c 及其字体文件ili9320_font.h 复

制至keil 工程模板的文件夹中;

(2) 准备好uCGUI源文件(本例使用的版本3.90a),将START 文件夹

下的GUI 文件夹全部复制到keil 工程模板的文件夹中;再将START 文件夹下的Config 文件夹复制至GUI 文件夹下;最后将Sample 文件夹下GUI_X 中的GUI_X.c 复制到Config 文件夹中。最终文件结构如图1-1所示:

图1-1

2、添加文件至工程,文件目录结构组如图2-2示:

图2-1在添加文件时应注意uCGUI下除了gui_config 下需要添加所有的.h 头文件外其余所有均不需要添加头文件;

图2-2

3、GUI配置

(1)G UIConf.h配置:

#define GUI_OS (0) /*编译多任务支持

#define GUI_SUPPORT_TOUCH (0) /* 触屏支持*/

#define GUI_SUPPORT_UNICODE (1) /*支持ASCII/UNICODE码*/ #define GUI_DEFAULT_FONT &GUI_Font6x8 /*初始化字体大小*/

#define GUI_ALLOC_SIZE 5*1024 /*开辟动态空间大小*/

图3-1

注意:动态空间受芯片容量大小制约,不可开辟过大,否则报错

图3-2(2) LCD 相关文件配置:

LCDConfig.h 的配置

#define LCD_XSIZE (320)

#define LCD_YSIZE (240) /*x,y方向像素设置*/

#define LCD_BITSPERPIXEL (16) /*像素位数*/

#define LCD_CONTROLLER 9320 /*LCD驱动器型号*/

图3-3

继续修改第110行

#define LCD_INIT_CONTROLLER() ili9320_Initializtion()

并将其后的语句注释掉。ili9320_Initializtion()为具体的LCD驱动

器初始化程序,应与ili9320.c中的初始化函数名一致。

图3-4

4、修改LCD驱动LCDDummy.C

(1)修改第42行

#if (LCD_CONTROLLER == 9320)

注意:此处LCD_CONTROLLER 的值应与LCD_Config.h 中#define LCD_CONTROLLER 9320 一致,如果都用-1 也可以。

图4-1(2) 修改第383行void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

函数为:

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

{

/* Write into hardware ... Adapt to your system */

ili9320_SetPoint(x,y,PixelIndex);

}

图4-2

(3) 修改第407行unsigned int LCD_L0_GetPixelIndex(int x, int y)函数为:

unsigned int LCD_L0_GetPixelIndex(int x, int y)

{

return ili9320_GetPoint(x,y);//PixelIndex;

}

图4-3

(4)添加包含文件#include "ili9320.h"

5、编写测试代码

int main()

{

GPIO_Config();

USART_InitConfig(); //使用printf()函数时必须先初始化串口,否则程序会死在printf()上,无法运行

GUI_Init();

GUI_SetFont(&GUI_Font8x16);

GUI_SetBkColor(GUI_BLUE);

GUI_DispString("GUI Version Is ");

GUI_DispString(GUI_GetVersionString()); //查询GUI版本号 GUI_GetVersionString()

GUI_GotoXY(110,100);

GUI_DispString("Hello World ! ");

while(1)

{

}

}

运行如图所示:

图4-4

二、GUI界面设计

1、显示自造的汉字

使用GUIFontTool 制作所需字库,添加到工程,复制生成的字库程序中的#ifndef GUI_FLASH

#define GUI_FLASH

#endif

到主函数,

然后声明外部变量extern GUI_FLASH const GUI_FONT GUI_FontHZ_SimSun100_16;

当使用该字库时需调用GUI_SetFont(&GUI_FontHZ_SimSun100_16);

2、显示图片

使用uC-GUI-BitmapConvert.exe 打开bmp 图片->Imagin->Convert to->选择RGB 或其他->保存,即可生成 .c 文件。将生成的文件添加到工程,将 .c 文件后半部分的结构体定义名如:GUI_CONST_STORAGE GUI_BITMAP bmnotebook ,作为外部变量在主函数中声明:extern GUI_CONST_STORAGE GUI_BITMAP bmnotebook;,绘图时调用函数GUI_DrawBitmap(&bmnotebook,10,10);即可。

三、触摸屏程序设计思路 1、 触屏校准算法

触屏坐标的操作需分清物理坐标(),px py 与像素坐标(),tx ty 之间的换算关系GUI 函数的操作均是对像素坐标而言的。校准思路:读取屏幕四个角上的物理坐标可获得px,py 的最大最小值max px 、min px 、max py 和min py ;计算公式:

max min 0(4095.0320)/()tx px px x =⨯-+ max min 0(4095.0240)/()ty py py y =⨯-+

其中 0x 、0y 为像素坐标在x ,y 方向的偏移量。

获取0x 、0y 的方法1(笨拙的办法):先令0x 、0y 为0编程下载调试,按屏幕的四角,输出像素坐标即可获取偏移量0x 、0y 。

2、 获取0x 、0y 的方法2(矫正算法):

3、 消除读取坐标时干扰的方法:

连续读取两次(物理)坐标,当两次数值相差在较小范围(如50)时视为有效。

注意:max px 、min px 、max py 和min py 等的数据类型(均为16位数据),在进行除法时要强制转换为浮点型,而在GUI 函数中则需要强制转化为整型。

经验总结

1、 若颜色显示与设置不同,是由 未启动红蓝交换 造成的,解决方法:建立查询表,启动

红蓝交换即在 LCD_Config.h 中添加以下两行:

#define LCD_FIXEDPALETTE 565 //定义颜色查询表

#define LCD_SW AP_RB 1 //激活LCD红(Red)蓝(Blue)交换(SW AP)

文档

STM32自学笔记之uCGUI移植总结

uCUI移植总结做了两个星期终于把gui搞通了,现将移植方法总结如下,仅供学习交流之用。2014/8/23一、uCGUI移植步骤1、uCGUI及TFT驱动文件准备(1)将TFT驱动文件ili9320.h、ili9320.c及其字体文件ili9320_font.h复制至keil工程模板的文件夹中;(2)准备好uCGUI源文件(本例使用的版本3.90a),将START文件夹下的GUI文件夹全部复制到keil工程模板的文件夹中;再将START文件夹下的Config文件夹复制至GUI文件夹下;最后将S
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top