移植ucgui到ucosii--part1

/****移植ucgui到ucosii****/
/*****************************************************************************************
平台 VS2008
编者:张永辉 2013年6月6日
*****************************************************************************************/
1:下载UCGUI394
2:将GUI文件加入到source

3: 在工程添加目录:      对应实际目录
    GUI_Config              \app\LNG3A\GUI_Config
                                GUIConf.h       //修改配置第一步
                                GUITouchConf.h
                                LCDConf.h
    GUI_LCDDriver           \lpc1788_ucos\GUI_LCDDriver
                                GUI_X_Touch.c
                                GUI_X_uCOSII.c
                                GUI_X_uCOSII.h
                                GUI_X_1788.c
                                GUI_X_1788.h
    GUI_ConvertColor        \source\GUI
                                LCDP565.c
    GUI_Core                \source\GUI
                                all
    GUI_Font                \source\GUI
                                F6x8.c
    GUI_JPEG                \source\GUI
                                all
4: 需要bsp的支持
        bsp480272.h
        bsp480272.c
        bsptouch.c
        bsptouch.h
5: 暂时的测试函数
    app_touch.h
    app_touch.c
    main.c
6: VS2008配置
    AdditionalIncludeDirectories="D:\embed\source\uCOSII;D:\embed\vs2008_ucos\uCOSII_port;
    D:\embed\app\LNG3A;D:\embed\vs2008_ucos\bsp;D:\embed\app\LNG3A\GUI_config;
    D:\embed\vs2008_ucos\GUI_LCDDriver;D:\embed\source\GUI\Core"

/***************************************************************************************************
File    : GUIConf.h
功    能: GUI高层配置
参考:uCGUI_OS_LPC1788
编者:张永辉  2013年6月4日
****************************************************************************************************/
#ifndef GUICONF_H
#define GUICONF_H

#define GUI_OS                    (1)   /* Compile with multitasking support */
#define GUI_SUPPORT_TOUCH         (1)   /* Support a touch screen (req. win-manager) */
#define GUI_SUPPORT_UNICODE       (0)   /* Support mixed ASCII/UNICODE strings */

#define GUI_DEFAULT_FONT          &GUI_Font6x8
#define GUI_ALLOC_SIZE            12500 /* Size of dynamic memory ... For WM and memory devices*/

/***************************************************************************************************
*         Configuration of available packages
*/

#define GUI_WINSUPPORT            0     /* Window manager package available */
#define GUI_SUPPORT_MEMDEV        0     /* Memory devices available */
#define GUI_SUPPORT_AA            0     /* Anti aliasing available */

//#define   GUI_MT  1               //启用多任务支持
//#define   GUI_MAX_TASK    10      //能调用
//**************************************************************************************************
#endif

/*****************************************************************************************
文    件:GUITouchConf.h
*****************************************************************************************/
#ifndef GUITOUCH_CONF_H
#define GUITOUCH_CONF_H

#define GUI_TOUCH_SWAP_XY    0      //=0 xy轴不交换,=1交换
#define GUI_TOUCH_MIRROR_X   0      //x轴镜像
#define GUI_TOUCH_MIRROR_Y   0      //Y轴镜像

#define GUI_TOUCH_AD_LEFT   0       //AD转换的X最小值
#define GUI_TOUCH_AD_RIGHT  480     //AD转换的X最大值
#define GUI_TOUCH_AD_TOP    0       //AD转换的Y最小值
#define GUI_TOUCH_AD_BOTTPM 272     //AD转换的Y最大值
//#define GUI_TOUCH_AD_BOTTOM

#define GUI_TOUCH_XSIZE     LCD_XSIZE
#define GUI_TOUCH_YSIZE     LCD_YSIZE

#endif /* GUITOUCH_CONF_H */

/***************************************************************************************************
文    件:LCDConf.h
功    能: LCD配置
***************************************************************************************************/
#ifndef LCDCONF_H
#define LCDCONF_H
/***************************************************************************************************
*                   General configuration of LCD
***************************************************************************************************/
#define LCD_XSIZE      (480)                //* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE      (272)                //* Y-resolution of LCD, Logical coor. */

#define LCD_BITSPERPIXEL (16)               //16位颜色 按565模式
#define LCD_CONTROLLER  (1788)              //控制器 LPC1788
#undef WIN32
//**************************************************************************************************
#endif

/*****************************************************************************************
         触摸屏支持函数
文件:GUI_X_Touch.c
1:必须的4个硬件函数,他们由GUI_TOUCH_Exec调用
2:GUI_TOUCH_Exec() 需要约0.01秒的调用
*****************************************************************************************/
#include  "\embed\vs2008_ucos\drivers\opengl.h"
//X轴测量激活
void GUI_TOUCH_X_ActivateX(void)
{
}

//Y轴测量激活
void GUI_TOUCH_X_ActivateY(void)
{
}

//返回AD转换的X轴结果
int GUI_TOUCH_X_MeasureX(void)
{
 return GlTouchGetAdX();
}

//返回AD转换的Y轴结果
int GUI_TOUCH_X_MeasureY(void)
{
 return GlTouchGetAdY();
}

/*****************************************************************************************
*                                               uC/GUI
File    : GUI_X_uCOS-II.C
*****************************************************************************************/
#include "uCOS_II.H"
#include "LCDConf.h"
#include "GUI_X_uCOSII.h"
#include "\embed\source\lib\basetype.h"
/*****************************************************************************************
*                                        全局变量
*****************************************************************************************/
static  OS_EVENT  *DispSem;
static  int        KeyPressed;
static  char       KeyIsInited;
static  OS_EVENT  *KeySem;
/*****************************************************************************************
                                         时间函数
Notes: 系统需要的时间
*****************************************************************************************/
//获取时间
int  GUI_X_GetTime (void)
{
    return ((int)OSTimeGet());
}
//延时函数 单位是ms
void  GUI_X_Delay (int period)
{
 //(1000/OS_TICKS_PER_SEC)
    OSTimeDly((period*OS_TICKS_PER_SEC)/1000);
 //OSTimeDlyHMSM(0,0,0,period);
}
//默认时间是1ms
void GUI_X_ExecIdle(void)
{
   OSTimeDly(1);
}
/******************************************************************************************
*                                    多任务需要的接口函数
以下函数只用多任务环境。 在GUIConf.h定义GUI_OS 1时才有效
******************************************************************************************/
void  GUI_X_InitOS (void)
{
   DispSem = OSSemCreate(1);
}
void  GUI_X_Lock (void)
{
    unsigned  char  err;
    OSSemPend(DispSem, 0, &err);
}
void  GUI_X_Unlock (void)
{
    OSSemPost(DispSem);
}
//返回当前任务ID
unsigned int  GUI_X_GetTaskId (void)
{
    return ((unsigned  int)(OSTCBCur->OSTCBPrio));
}
/*****************************************************************************************
*                                       键盘接口函数
*****************************************************************************************/
//初始化
void GUI_X_Init (void)
{
    KeySem = OSSemCreate(0);
}

static  void  CheckInit (void)
{
    if (KeyIsInited == FALSE)
    {
        KeyIsInited = TRUE;
        GUI_X_Init();
    }
}

int  GUI_X_GetKey (void)
{
    int r;
    r  = KeyPressed;
    CheckInit();
    KeyPressed = 0;
    return (r);
}

//使用邮箱等待按键的按下
int  GUI_X_WaitKey (void)
{
    int    r;
    unsigned  char  err;

    CheckInit();
    if (KeyPressed == 0)   
    {  
        OSSemPend(KeySem, 0, &err);     //等待按键按下。
    }
    r = KeyPressed;                     //获取键值
    KeyPressed = 0;
    return (r);
}

void  GUI_X_StoreKey (int k)
{
    KeyPressed = k;                     //给键值
    OSSemPost(KeySem);                  //返回等待
}
unsigned  char GetKey(void)
{
    return  0xff;
}

//打印运行日志
void GUI_X_Log(const char *s)
{}
void GUI_X_Warn(const char *s)
{}
void GUI_X_ErrorOut(const char *s)
{}

/******************************************************************************************
*                                        uC/GUI
File    : GUI_X_uCOSII.h
Purpose : Config / System dependent externals for GUI
*******************************************************************************************/
#ifndef  __GUI_X_UCOSII_H_
#define  __GUI_X_UCOSII_H_
#include "\embed\source\lib\basetype.h"
//****************************************************************************************
//时间函数
int     GUI_X_GetTime (void);
void    GUI_X_Delay (int period);
void    GUI_X_ExecIdle(void);
//多任务需要的接口函数
void    GUI_X_InitOS (void);
void    GUI_X_Lock (void);
void    GUI_X_Unlock (void);
u32     GUI_X_GetTaskId (void);
//键盘接口函数
void    GUI_X_Init  (void);
int     GUI_X_GetKey (void);
int     GUI_X_WaitKey (void);
void    GUI_X_StoreKey (int k);
u8      GetKey(void);
//日志记录函数
void    GUI_X_Log(const char *s);
void    GUI_X_Warn(const char *s);
void    GUI_X_ErrorOut(const char *s);
//****************************************************************************************
#endif

/***************************************************************************************************
文    件:GUI_X_1788.h
功    能:1788底层接口函数实现
***************************************************************************************************/
#ifndef __GUI_X_1788_H_
#define __GUI_X_1788_H_
//**************************************************************************************************
#include "\embed\source\lib\basetype.h"
#include "LCD_ConfDefaults.h"
//**************************************************************************************************
void LCD_L0_DrawBitmap(int x0, int y0,                  //画位图
                       int xsize, int ysize,
                       int BitsPerPixel,
                       int BytesPerLine,
                       const U8* pData, int Diff,
                       const LCD_PIXELINDEX* pTrans);
void LCD_L0_FillRect(int x0, int y0, int x1, int y1);   //矩形填充
void LCD_L0_DrawVLine  (int x, int y0,  int y1);        //竖线
void LCD_L0_DrawHLine(int x0, int y,  int x1);          //横线
void LCD_L0_XorPixel(int x, int y);                     //反色

unsigned int LCD_L0_GetPixelIndex(int x, int y);                    //设置某点的颜色
void         LCD_L0_SetPixelIndex(int x, int y, int PixelIndex);    //获取某点的颜色
void         delay_Ns (int idly);                                   //延时
//**************************************************************************************************
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值