找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3063|回复: 0
打印 上一主题 下一主题
收起左侧

STM32移植uCGUI笔记

[复制链接]
跳转到指定楼层
楼主
ID:85681 发表于 2015-7-15 02:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下的工作都是建立在裸机正常显示的情况下进行的,在移植前必须得裸机显示进行测试,正常则往下做。
第一步:
        在网上下载uCGUI的完整源码,里面有三个文件夹,“Start”、“Sample”、“Tool”,打开Start文件夹,把其中的GUI和Config拷贝到自己工程目录下,其中GUI里面有11一个文件,这都是uCGUI的结构源码。
第二步:
        在工程目录下建立新的MDK工程,在把其中的结构源码分别对应全部添加到工程中

其中uCGUI/Config中有三个文件GUIConf.h、LCDConf.h、GUI_X.c,如果所使用的是触摸屛,需添加GUITouchConf.h
GUIConf.h的内容为(0为关,1为开):
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS                                    (1)  /* Compile with multitasking support */               //支持操作系统
#define GUI_SUPPORT_TOUCH           (0)  /* Support a touch screen (req. win-manager) *//触摸关闭
#define GUI_SUPPORT_UNICODE        (1)  /* Support mixed ASCII/UNICODE strings */       //支持ASCII码
#define GUI_DEFAULT_FONT              &GUI_Font6x8 //默认字体,可调整
#define GUI_ALLOC_SIZE                    5000  /* Size of dynamic memory ... For WM and memory devices*/提供窗口的管理的内存

/*********************************************************************
*
*         Configuration of available packages
*/
#define GUI_WINSUPPORT                  1  /* Window manager package available */
#define GUI_SUPPORT_MEMDEV        1  /* Memory devices available */
#define GUI_SUPPORT_AA                  1  /* Anti aliasing available */
#endif  /* Avoid multiple inclusion *

LCDConf.h的内容为:
#ifndef LCDCONF_H
#define LCDCONF_H

#define LCD_XSIZE          (320)
#define LCD_YSIZE          (240)
#define LCD_CONTROLLER     (9320)   //液晶控制芯片型号
#define LCD_BITSPERPIXEL   (16)         //16位显示格式
#define LCD_FIXEDPALETTE   (565)
#define LCD_SWAP_RB        (1)
//#define LCD_SWAP_XY        (1)
#define LCD_INIT_CONTROLLER()   LCD_MyInit()
#endif /* LCDCONF_H */

GUI_X.c的内容为:
#include "GUI.h"
#include "GUI_X.h"
#include "delay.h"
U32  GUI_X_GetTaskId(void) {return 0;}
void GUI_X_Lock(void) {;}
void GUI_X_Unlock(void) {;}
void GUI_X_InitOS(void) {;}
void GUI_X_Log(const char *s){}
void GUI_X_Warn(const char *s){}
void GUI_X_ErrorOut(const char *s){}
void GUI_X_ExecIdle(void) {;}
void GUI_X_Init(void) {;}
void GUI_X_Delay(int Period) {delay_ms(Period);}
int  GUI_X_GetTime(void) {return 0;}
  GUI_X.c的作用是避免编译出错。

第三步:
        接口函数的匹配,打开uCGUI/LCDDriver,当中有三个文件“LCDDummy.c”、“LCDNull.c”、“LCDWin.c”,另外在这个文件夹中加上自己液晶的驱动,一般都由厂家提供的,以ILI93xx.c为例。然后打开LCDDummy.c,在其中加入液晶驱动的头文件ILI93xx.h,
最后将其中如下的函数替换成这样
int LCD_L0_Init(void)
{  
  ili9320_Initializtion(); //液晶驱动的初始化
  return 0;
}
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
  ili9320_SetPoint(x,y,PixelIndex);//液晶驱动的换点函数
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
  return ili9320_GetPoint(x,y); //液晶驱动的获取点的函数
}
void LCD_L0_SetOrg(int x,int y)
{
}
void LCD_L0_XorPixel(int x, int y)
{
  LCD_PIXELINDEX Index = ili9320_GetPoint(x,y);
  ili9320_SetPoint(x,y,LCD_NUM_COLORS-1-Index);
}
void LCD_L0_DrawHLine(int x0, int y,  int x1)
{
  GUI_Line(x0,y,x1,y,LCD_COLORINDEX); //液晶驱动的画线函数
}
void LCD_L0_DrawVLine  (int x, int y0,  int y1)
{
  GUI_Line(x,y0,x,y1,LCD_COLORINDEX);
}

第四步:调用GUI函数测试,这里以“Hello uCGUI!”为例,主函数的源码如下:
#include<stm32f10x_lib.h>
#include "gui.h"

int main(void)
{
    ALLConf_Init(void);  //芯片工作的必要配置,时钟、引脚等
    GUI_Ini();  //初始化
    GUI_DispStringAt("Hello uCGUI!",100,100);
    while(1);
}

编译下载后如果液晶上在(100.100)的位置上显示“Hello uCGUI!”就说明移植成功了!


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表