亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? guitimer.c

?? 汽車綜合監控儀——廣東省大學生電子設計大賽作品 (獲一等獎) 使用技術:ARM9(S3C2440)
?? 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.*----------------------------------------------------------------------File        : GUITimer.cPurpose     : Supplies timers for new emWin GSC-------------------------------------------------------------------------------------------------END-OF-HEADER------------------------------*/#include <stddef.h>           /* needed for definition of NULL */#include "GUI_Protected.H"/*  *****************************************************************  *                                                               *  *              Config defaults                                  *  *                                                               *  ******************************************************************//*      *************************************************************      *                                                           *      *                 Object definition                         *      *                                                           *      **************************************************************/typedef struct {  GUI_TIMER_CALLBACK* cb;  GUI_TIMER_Handle hNext;  int Flags;	U32 Context;	GUI_TIMER_TIME t0;	GUI_TIMER_TIME Period;} GUI_TIMER_Obj;/*  *****************************************************************  *                                                               *  *              Static data                                      *  *                                                               *  ******************************************************************/GUI_TIMER_Handle hFirstTimer;/*  ********************************************************************  *                                                                  *  *                 Macros for internal use                          *  *                                                                  *  *********************************************************************/#define GUI_TIMER_H2P(h) (GUI_TIMER_Obj*)GUI_ALLOC_H2P(h)/*  ********************************************************************  *                                                                  *  *                    Static routines                               *  *                                                                  *  *********************************************************************/static void Unlink(GUI_TIMER_Handle hTimer) {  GUI_TIMER_Obj* pTimer = GUI_TIMER_H2P(hTimer);  GUI_TIMER_Handle hi;  GUI_TIMER_Obj*   pi;/* Check if it is the first element */  if (hFirstTimer == hTimer) {    hFirstTimer = pTimer->hNext;    return;	}  hi = hFirstTimer;/* Try to find it in the list ... */  while(hi) {    /* GUI_ASSERT(hi<1000,0); */    pi = GUI_TIMER_H2P(hi);    if (pi->hNext == hTimer) {      pi->hNext = pTimer->hNext;      break;		}            hi = pi->hNext;  }  }/*********************************************************************   Link new Timer	 ==============	This routine inserts the new timer (referenced by its handle) into	the linked list. The linked list is sorted according to timestamps.	The first element is the timer which expires first.*/void Link(GUI_TIMER_Handle hNew) {  GUI_TIMER_Obj*   pNew        = GUI_TIMER_H2P(hNew);  GUI_TIMER_Obj*   pTimer;  GUI_TIMER_Obj*   pNext;  GUI_TIMER_Handle hNext;  if (hFirstTimer ==0) { /* List is empty, make it the only element */    hFirstTimer = hNew;	  pNew->hNext = 0;  } else {    GUI_TIMER_Obj* pFirstTimer      = GUI_TIMER_H2P(hFirstTimer);/* Check if we have to make it the first element */    if ((pNew->t0 - pFirstTimer->t0) <=0) {      pNew->hNext = hFirstTimer;      hFirstTimer = hNew;			return;		} else {      GUI_TIMER_Handle hTimer = hFirstTimer;/* Put it into the list */      do {        pTimer       = GUI_TIMER_H2P(hTimer);        hNext        = pTimer->hNext;        if (hNext ==0)					goto Append;        pNext      = GUI_TIMER_H2P(hNext);				if ((pNew->t0 - pNext->t0) <=0) {          pNew->hNext  = hNext;          pTimer->hNext= hNew;          return;				}			} while(1);/* Put it at the end of the list */Append:      pNew->hNext  = hNext;      pTimer->hNext= hNew;      return;		}  }}/*  ********************************************************************  *  *        Static routines:  Exec  *  *********************************************************************/int GUI_TIMER_Exec(void) {  int r = 0;  GUI_TIMER_TIME t = GUI_GetTime();  GUI_LOCK(); {    while (hFirstTimer) {     	GUI_TIMER_Obj* pTimer = GUI_TIMER_H2P(hFirstTimer);      if ((pTimer->t0-t) <=0) {        GUI_TIMER_MESSAGE tm;        tm.Time = t;				tm.Context = pTimer->Context;        hFirstTimer = pTimer->hNext;				pTimer->cb(&tm);        r = 1;			} else			  break;    }    /*		GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);    pObj->t0 = Time;    */  } GUI_UNLOCK();   return r;}/*  ********************************************************************  *                                                                  *  *        Exported routines:  Create                                *  *                                                                  *  *********************************************************************/GUI_TIMER_Handle GUI_TIMER_Create      (    GUI_TIMER_CALLBACK* cb,                                    int Time,                                    U32 Context,                                    int Flags) {  GUI_TIMER_Handle hObj;  GUI_TIMER_Obj* pObj;  GUI_LOCK();  GUI_USE_PARA(Flags);  GUI_USE_PARA(Time);  GUI_pfTimerExec = GUI_TIMER_Exec;	{    /* Alloc memory for obj */    hObj = GUI_ALLOC_ALLOC(sizeof(GUI_TIMER_Obj));    pObj = GUI_TIMER_H2P(hObj);    /* init member variables */    pObj->cb = cb;		pObj->Context = Context;    /* Link it */		Link(hObj);	} GUI_UNLOCK();  return hObj;}/*  ********************************************************************  *                                                                  *  *        Exported routines:  Delete                                *  *                                                                  *  *********************************************************************/void GUI_TIMER_Delete(GUI_TIMER_Handle hObj) {/* Unlink Timer */  GUI_LOCK();    Unlink(hObj);    GUI_ALLOC_FREE(hObj);  GUI_UNLOCK();}/*  ********************************************************************  *                                                                  *  *        Exported routines:  Various methods                       *  *                                                                  *  *********************************************************************/void GUI_TIMER_SetPeriod(GUI_TIMER_Handle hObj, GUI_TIMER_TIME Period) {  GUI_LOCK(); {    GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);    pObj->Period = Period;  } GUI_UNLOCK(); }void GUI_TIMER_SetTime(GUI_TIMER_Handle hObj, GUI_TIMER_TIME Time) {  GUI_LOCK(); {   	GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);    pObj->t0 = Time;  } GUI_UNLOCK(); }void GUI_TIMER_SetDelay(GUI_TIMER_Handle hObj, GUI_TIMER_TIME Delay) {  GUI_LOCK(); {   	GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);    pObj->t0 = Delay;		Unlink(hObj);		Link(hObj);  } GUI_UNLOCK(); }void GUI_TIMER_Restart(GUI_TIMER_Handle hObj) {  GUI_LOCK(); {   	GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);    pObj->t0 = GUI_GetTime() +pObj->Period;		Unlink(hObj);		Link(hObj);  } GUI_UNLOCK(); }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩1234| 国产精品伦理一区二区| 亚洲二区视频在线| 91福利在线导航| 一区二区三区毛片| 欧美日韩视频在线观看一区二区三区| 亚洲综合一二区| 在线免费观看一区| 日韩av网站免费在线| 欧美人牲a欧美精品| 麻豆一区二区三区| 久久色在线观看| 成人不卡免费av| 一区二区三区中文字幕精品精品 | 欧美一区二区在线观看| 美女尤物国产一区| 久久色视频免费观看| 成人久久18免费网站麻豆| 亚洲精品综合在线| 欧美一级二级在线观看| 国产在线不卡一区| 国产精品久久久久精k8| 在线观看日韩高清av| 美女视频网站黄色亚洲| 国产日韩欧美在线一区| 91成人在线免费观看| 奇米精品一区二区三区在线观看一| 日韩午夜在线观看| av一区二区三区四区| 肉肉av福利一精品导航| 久久亚区不卡日本| 色老汉av一区二区三区| 蜜臀久久99精品久久久久久9 | 91麻豆精品国产无毒不卡在线观看| 成人免费看黄yyy456| 亚洲精品国产无套在线观| 欧美一级一区二区| 99视频有精品| 免费在线看成人av| 1区2区3区国产精品| 欧美一级在线视频| 日本电影欧美片| 国产米奇在线777精品观看| 亚洲欧美一区二区三区极速播放| 制服.丝袜.亚洲.中文.综合| 成人精品亚洲人成在线| 久久国产精品99久久久久久老狼| 亚洲视频一区二区在线| 欧美成人精品高清在线播放| 色综合久久久久综合体| 国模冰冰炮一区二区| 五月婷婷综合激情| 亚洲三级在线免费观看| 精品国产电影一区二区| 色噜噜偷拍精品综合在线| 国产精品一区一区三区| 日韩av电影免费观看高清完整版 | 一本色道亚洲精品aⅴ| 久久国产免费看| 亚洲成人午夜电影| 亚洲特黄一级片| 久久久久97国产精华液好用吗| 911精品国产一区二区在线| 一本大道综合伊人精品热热| 国产激情一区二区三区| 蜜桃精品视频在线| 日韩激情一二三区| 亚洲国产你懂的| 亚洲精品美国一| 亚洲欧洲韩国日本视频| 亚洲国产精品二十页| 国产亚洲精品精华液| 久久一夜天堂av一区二区三区| 欧美一区二区三区免费视频| 欧美精品在线观看播放| 欧美中文字幕一区二区三区 | 黑人巨大精品欧美一区| 捆绑紧缚一区二区三区视频| 午夜精品久久久久影视| 亚洲亚洲精品在线观看| 亚洲猫色日本管| 亚洲老司机在线| 亚洲国产精品嫩草影院| 亚洲高清免费一级二级三级| 亚洲国产精品久久久久婷婷884 | 国产欧美日韩亚州综合| 久久午夜老司机| 中文字幕精品一区二区三区精品| 久久精品视频一区二区| 亚洲国产精品成人久久综合一区| 午夜久久久影院| 三级亚洲高清视频| 视频在线观看91| 免费观看在线综合色| 精品一区二区在线免费观看| 激情综合色综合久久综合| 国产精品乡下勾搭老头1| 国产成人小视频| 91在线免费播放| 欧美性感一区二区三区| 91精品国产一区二区三区香蕉| 欧美一区日韩一区| 国产拍揄自揄精品视频麻豆| 久久综合视频网| 51久久夜色精品国产麻豆| 欧美mv日韩mv亚洲| 国产日产欧美一区| 亚洲精品福利视频网站| 天天操天天综合网| 国产在线一区二区| 99久久99久久久精品齐齐 | 99久久婷婷国产综合精品电影| 99久久精品免费精品国产| 欧美日韩视频在线第一区| 亚洲精品ww久久久久久p站| 欧美大片在线观看一区二区| 国产性色一区二区| 一区二区三区在线观看国产| 石原莉奈在线亚洲二区| 国产成人av电影在线| 91国偷自产一区二区使用方法| 日韩一区二区三区在线观看| 欧美高清在线一区| 日韩激情视频在线观看| 成人性生交大片免费看中文 | 欧美激情一区三区| 一区二区三区不卡在线观看| 久久成人麻豆午夜电影| 99国产精品久久久久| 欧美一级高清大全免费观看| 色欧美乱欧美15图片| 日韩精品专区在线影院观看 | 自拍偷拍国产精品| 丝袜亚洲另类欧美| 一区二区三区影院| 国产真实精品久久二三区| 日本丶国产丶欧美色综合| www国产成人| 日韩国产欧美三级| 色哟哟日韩精品| 国产视频一区二区三区在线观看| 一区二区三区国产精品| 国产色综合久久| 色婷婷国产精品| 国产不卡视频一区二区三区| 狠狠色狠狠色合久久伊人| 欧洲亚洲精品在线| 亚洲国产cao| 国产精品乱码人人做人人爱| 麻豆成人久久精品二区三区红 | 五月激情丁香一区二区三区| 日韩一区和二区| 国产很黄免费观看久久| 日本欧美久久久久免费播放网| 亚洲视频1区2区| 亚洲一区二区三区视频在线播放 | xfplay精品久久| 成人高清视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩精品专区在线| 免费在线欧美视频| 国产精品国产三级国产aⅴ中文| 欧美日韩在线一区二区| 日韩福利视频网| 日本一区二区免费在线| 欧美日韩国产bt| 粉嫩av一区二区三区在线播放| 亚洲一区二区三区美女| 欧美一级视频精品观看| 99精品欧美一区二区三区综合在线| 捆绑调教一区二区三区| 亚洲福中文字幕伊人影院| 色诱亚洲精品久久久久久| 欧美在线观看18| 成人免费在线播放视频| 高清不卡一区二区| 国产蜜臀97一区二区三区| 国产一区二区在线视频| 日韩欧美综合一区| 另类小说综合欧美亚洲| 日韩欧美一级特黄在线播放| 肉色丝袜一区二区| 欧美tickling挠脚心丨vk| 久久91精品久久久久久秒播| 日韩精品一区二区三区三区免费| 精品夜夜嗨av一区二区三区| 精品国产免费久久| 国产精品99久久久| 国产精品久久久久久久久免费相片 | bt欧美亚洲午夜电影天堂| 国产色婷婷亚洲99精品小说| 丁香婷婷综合激情五月色| 中文字幕一区二区三区精华液| 波多野结衣中文一区| 亚洲人成影院在线观看| 欧美在线看片a免费观看| 三级欧美在线一区| 一级中文字幕一区二区| 欧美肥妇bbw| 国产专区综合网|