📄 gui_x.c
字号:
/*********************************************************************************************************** uC/GUI V4.12* 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 "includes.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;/*********************************************************************************************************** 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) { GUI_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 == FALSE) { KeyIsInited = TRUE; 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);} 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); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -