⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui_x_ucos.c

📁 MCB2300_ucgui_LCD320240.rar LPC2368的uc/gui的移植
💻 C
字号:
/*
*********************************************************************************************************
*   											 uC/GUI
*   					 Universal graphic software for embedded applications
*
*   					(c) Copyright 2002, Micrium Inc., Weston, FL
*   					(c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*   		   礐/GUI is protected by international copyright laws. Knowledge of the
*   		   source code may not be used to write a similar product. This file may
*   		   only be used in accordance with a license and should not be redistributed
*   		   in any way. We appreciate your understanding and fairness.
*
---Author-Explanation
* 
* 1.00.00 020519 JJL	First release of uC/GUI to uC/OS-II interface
* 
*
* Known problems or limitations with current version
*
*    None.
*
*
* Open issues
*
*    None
*********************************************************************************************************
*/

#include "ucos_ii.h"
#include "GUI_Private.H"
#include "stdio.H"

/*
*********************************************************************************************************
*   									  GLOBAL VARIABLES
*********************************************************************************************************
*/

static  OS_EVENT  *DispSem;
static  OS_EVENT  *EventMbox;

static  OS_EVENT  *KeySem;
static  int 	   KeyPressed;
static  char	   KeyIsInited;

void GUI_X_Log(const char *s)
{
	GUI_USE_PARA(s);
}
void GUI_X_Warn(const char *s)
{
	GUI_USE_PARA(s);
}
void GUI_X_ErrorOut(const char *s)
{
	GUI_USE_PARA(s);
}
/*
*********************************************************************************************************
*   									 TIMING FUNCTIONS
*
* Notes: Some timing dependent routines of uC/GUI require a GetTime and delay funtion. 
*   	 Default time unit (tick), normally is 1 ms.
*********************************************************************************************************
*/

int GUI_X_GetTime(void)
{
	return ((int) OSTimeGet());
}


void GUI_X_Delay(int period)
{
	INT32U  ticks;


	ticks = (period * 1000) / OS_TICKS_PER_SEC;
	OSTimeDly((INT16U) ticks);
}


/*
*********************************************************************************************************
*   									   GUI_X_ExecIdle()
*********************************************************************************************************
*/
void GUI_X_ExecIdle(void)
{
	;//OS_X_Delay(1);
}


/*
*********************************************************************************************************
*   								 MULTITASKING INTERFACE FUNCTIONS
*
* Note(1): 1) The following routines are required only if uC/GUI is used in a true multi task environment, 
*   		  which means you have more than one thread using the uC/GUI API.  In this case the #define 
*   		  GUI_OS 1   needs to be in GUIConf.h
*********************************************************************************************************
*/

void GUI_X_InitOS(void)
{
	DispSem = OSSemCreate(1);
	EventMbox = OSMboxCreate((void *) 0);
}


void GUI_X_Lock(void)
{
	INT8U  err;


	OSSemPend(DispSem, 0, &err);
}


void GUI_X_Unlock(void)
{
	OSSemPost(DispSem);
}


U32 GUI_X_GetTaskId(void)
{
	return ((U32) (OSTCBCur->OSTCBPrio));
}

/*
*********************************************************************************************************
*   									 GUI_X_WaitEvent()
*   									 GUI_X_SignalEvent()
*********************************************************************************************************
*/


void GUI_X_WaitEvent(void)
{
	INT8U  err;


	(void) OSMboxPend(EventMbox, 0, &err);
}


void GUI_X_SignalEvent(void)
{
	(void) OSMboxPost(EventMbox, (void *) 1);
}

/*
*********************************************************************************************************
*   								   KEYBOARD INTERFACE FUNCTIONS
*
* Purpose: The keyboard routines are required only by some widgets.
*   	   If widgets are not used, they may be eliminated.
*
* Note(s): If uC/OS-II is used, characters typed into the log window will be placed	in the keyboard buffer. 
*   	   This is a neat feature which allows you to operate your target system without having to use or 
*   	   even to have a keyboard connected to it. (useful for demos !)
*********************************************************************************************************
*/

static  void CheckInit(void)
{
	if (KeyIsInited == 0)
	{
		KeyIsInited = 1;
		GUI_X_Init();
	}
}


void GUI_X_Init(void)
{
	KeySem = OSSemCreate(0);
}


int GUI_X_GetKey(void)
{
	int r;


	r = KeyPressed;
	CheckInit();
	KeyPressed = 0;
	return (r);
}


int GUI_X_WaitKey(void)
{
	int    r;
	INT8U  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);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -