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

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

?? os_cpu_c.c

?? UCOSII的PORT代碼。真是麻煩呀
?? C
?? 第 1 頁 / 共 2 頁
字號:
            interruptTable[0]();							//IRQ0 reserved vor time tick: OSTimeTick();
        } else if (eventType==WAIT_OBJECT_0+1)
        {   ResetEvent(hInterruptEvent[1]);
            interruptTable[1]();
        } else if (eventType==WAIT_OBJECT_0+2)
        {   ResetEvent(hInterruptEvent[2]);
            interruptTable[2]();
        } else if (eventType==WAIT_OBJECT_0+3)
        {   ResetEvent(hInterruptEvent[3]);
            interruptTable[3]();
        } else if (eventType==WAIT_OBJECT_0+4)
        {   ResetEvent(hInterruptEvent[4]);
            interruptTable[4]();
        } else if (eventType==WAIT_OBJECT_0+5)
        {   ResetEvent(hInterruptEvent[5]);
            interruptTable[5]();
        } else if (eventType==WAIT_OBJECT_0+6)
        {   ResetEvent(hInterruptEvent[6]);
            interruptTable[6]();
        } else if (eventType==WAIT_OBJECT_0+7)
        {   ResetEvent(hInterruptEvent[7]);
            interruptTable[7]();
        } else
        {   MessageBox(NULL, temp, "UCOS-II WIN32", MB_OK | MB_SETFOREGROUND | MB_ICONERROR);		//In case of timeout, display an error message ...
        }
        DBGPRINT(0x00000001, "--- OSIntExit\n");
        OSIntExit();
        LeaveCriticalSection(&criticalSection);
    }
}


/*
*********************************************************************************************************
   uCOS-II Functions
*********************************************************************************************************
*/

// OSTimeTickInit ************************************************************
// Initialize the WIN32 multimedia timer to simulate time tick interrupts
void OSTimeTickInit()
{   TIMECAPS timecaps;

    DBGPRINT(0x00000008, "*** OSTimeTickInit\n");

    if (timeGetDevCaps((LPTIMECAPS) & timecaps, sizeof(timecaps)) != TIMERR_NOERROR)
    {   printf("uCOS-II ERROR: Timer could not be installed 1\n");
        exit(-1);
    }
    if (timeBeginPeriod(timecaps.wPeriodMin) != TIMERR_NOERROR)
    {   printf("uCOS-II ERROR: Timer could not be installed 2\n");
        exit(-1);
    }
    if (timeSetEvent(1000 / OS_TICKS_PER_SEC, 0, (LPTIMECALLBACK) OSTimeTickCallback, 0, TIME_PERIODIC) == 0)
    {   printf("uCOS-II ERROR: Timer could not be installed 3\n");
        exit(-1);
    }
}

// OSTaskStkInit *************************************************************
// This function does initialize the stack of a task (this is only a dummy function
// for compatibility reasons, because this stack is not really used (except to refer
// to the task parameter *pdata)
OS_STK *OSTaskStkInit(void (*task) (void *pd), void *pdata, OS_STK *ptos, INT16U opt)
{   OS_STK *stk;

    DBGPRINT(0x00000010, "*** OSTaskStkInit\n");

    stk = (OS_STK *) ptos;                                      // Load stack pointer
    *--stk = (INT32U) pdata;					// Push pdata on the stack
    *--stk = (INT32U) task;					// Push the task start address on the stack

    return stk;
}


/*
*******************************************************************************
   Internal Hook functions (used by the WIN32 port, not user hookable)
*******************************************************************************
*/

// OSInitHookBegin ***********************************************************
// This hook is invoked at the beginning of the OS initialization. MUST NOT BE DEFINED BY THE APPLICATION.
void OSInitHookBegin()
{   int i;
    char temp[256];
    DBGPRINT(0x00000010, "*** OSInitHookBegin\n");

    hScheduleEvent  = CreateEvent(NULL, FALSE, FALSE, NULL);	//Create the scheduler and interrupt event

    for (i=0; i< NINTERRUPTS; i++)
    {	sprintf(temp,"OSirq%u",i);
    	hInterruptEvent[i] = CreateEvent(NULL, TRUE, FALSE, temp);
        interruptTable[i]  = OSDummyISR;
    }

    InitializeCriticalSection(&criticalSection);
    hScheduleThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) OSScheduleThread,  NULL, 0, (INT32U*) &i);	//Create the scheduler and interrupt thread
    hInterruptThread= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) OSInterruptThread, NULL, 0, &interruptThreadId);
    interruptTable[0] = OSTimeTick;

//  SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS);
    SetThreadPriority(hScheduleThread,  THREAD_PRIORITY_HIGHEST);//Set the scheduler and interrupt threads to maximum WIN32 priority
    SetThreadPriority(hInterruptThread, THREAD_PRIORITY_HIGHEST);

    SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlBreakHandler, TRUE);
    Sleep(0);							//Give Windows a chance to start the scheduler and interrupt thread

    //ADD YOUR OWN HOOK CODE HERE IF NECESSARY
}

// OSTaskCreateHook **********************************************************
// This hook is invoked during task creation. MUST NOT BE DEFINED BY THE APPLICATION.
void OSTaskCreateHook(OS_TCB * pTcb)
{   int i;

    DBGPRINT(0x00000004, "*** OSTaskCreateHook %u\n", pTcb->OSTCBPrio);

    hTaskThread[pTcb->OSTCBPrio] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) *(pTcb->OSTCBStkPtr),	//Map uCOS-II task to WIN32 thread
                                                (void *) *(pTcb->OSTCBStkPtr + 1), CREATE_SUSPENDED, (INT32U*) &i);
    taskSuspended[pTcb->OSTCBPrio]=1;									//Create thread in WIN32 suspended state

    if (OS_BOOST_WIN32_PRIORITY && (pTcb->OSTCBPrio!=OS_LOWEST_PRIO))           //Boost WIN32 thread priorites (except idle thread)
        SetThreadPriority(hTaskThread[pTcb->OSTCBPrio], THREAD_PRIORITY_ABOVE_NORMAL);

    //ADD YOUR OWN HOOK CODE HERE IF NECESSARY
}

// OSTaskIdleHook ************************************************************
// This hook is invoked from the idle task. MUST NOT BE DEFINED BY THE APPLICATION.
void OSTaskIdleHook()
{   if (idleTrigger)						//Issue a debug message, each time the idle task is reinvoked
    {   DBGPRINT(0x00000020, "*** OSTaskIdleHook\n");
        idleTrigger = FALSE;
    }

    //ADD YOUR OWN HOOK CODE HERE IF NECESSARY

    Sleep(0);							//Give Windows a chance to run other applications to when uCOS-II idles
}

/*
*******************************************************************************
   Hook functions (user hookable)
*******************************************************************************
*/

#if OS_CPU_HOOKS_EN > 0

/*
void OSInitHookBegin()                  MUST NOT BE DEFINED BY THE APPLICATION, see above.
*/

// OSInitHookEnd *************************************************************
// This hook is invoked at the end of the OS initialization.
void OSInitHookEnd()
{
}

/*
void OSTaskCreateHook(OS_TCB * pTcb)    MUST NOT BE DEFINED BY THE APPLICATION, see above.
*/

// OSTaskDelHook *************************************************************
// This hook is invoked during task deletion.
void OSTaskDelHook(OS_TCB * pTcb)
{
}

// OSTCBInitHook
// This hook is invoked during TCB initialization
void OSTCBInitHook(OS_TCB * ptcb)
{
}

/*
void OSTaskIdleHook()                   MUST NOT BE DEFINED BY THE APPLICATION, see above.
*/

// OSTaskStatHook ************************************************************
// This hook is invoked by the statistical task every second.
void OSTaskStatHook()
{
}

// OSTimeTickHook ************************************************************
// This hook is invoked during a time tick.
void OSTimeTickHook()
{
}

// OSTaskSwHook **************************************************************
// This hook is invoked during a task switch.
// OSTCBCur points to the current task (being switched out).
// OSTCBHighRdy points on the new task (being switched in).
void OSTaskSwHook()
{
}

#else
#pragma message("INFO: Hook functions must be defined in the application")
#endif

/*
*******************************************************************************
   Internal Task switch functions
*******************************************************************************
*/

// OSStartHighRdy *************************************************************
// Start first task
void OSStartHighRdy(void)
{   OSTaskSwHook();						//Call the task switch hook function

    OSTimeTickInit();                                           //Initialize time ticks

    // Increment OSRunning by 1
    OSRunning++;

    DBGPRINT(0x00000002, "*** OSStartHighRdy   from %2u to %2u\n", OSPrioCur, OSPrioHighRdy);

    SetEvent(hScheduleEvent);                                   //Trigger scheduling thread

    while(OSRunning)						//A redundant idle thread, in case the uCOS
    {   Sleep(0);						//scheduler does not invoke the uCOS idle task
//    	DBGPRINT(0x00000002, "*** OSStartHighRdy   Idle loop\n");
    }
    printf("INFO: Primary thread killed - exiting\n");
}

// OSCtxSw ********************************************************************
// Task context switch
void OSCtxSw(void)
{   OSTaskSwHook();						//Call the task switch hook function

    DBGPRINT(0x00000002, "*** OSCtxSw          from %2u to %2u\n", OSPrioCur, OSPrioHighRdy);

    SetEvent(hScheduleEvent);                                   //Trigger scheduling thread
    Sleep(0);							//... and give Windows a chance to invoke it
}

// OSIntCtxSw *****************************************************************
// Interrupt context switch
void OSIntCtxSw(void)
{   OSTaskSwHook();						//Call the task switch hook function

    DBGPRINT(0x00000002, "*** OSCIntCtxSw      from %2u to %2u\n", OSPrioCur, OSPrioHighRdy);

    SetEvent(hScheduleEvent);                                   //Trigger scheduling thread
    Sleep(0);							//... and give Windows a chance to invoke it
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
盗摄精品av一区二区三区| 91精品国产欧美日韩| 欧美日韩成人在线一区| 国产精品天美传媒| 青青草国产成人av片免费| 99这里只有久久精品视频| 日韩美一区二区三区| 亚洲黄色av一区| 大胆亚洲人体视频| 欧美videossexotv100| 一区二区欧美精品| 成人福利视频在线| 久久网站热最新地址| 青椒成人免费视频| 91.com视频| 亚洲午夜久久久久久久久电影院| 国产激情精品久久久第一区二区 | 婷婷国产在线综合| 91原创在线视频| 日本一区二区成人在线| 精品系列免费在线观看| 日韩免费观看2025年上映的电影| 亚洲观看高清完整版在线观看| 91视视频在线直接观看在线看网页在线看| 国产亚洲自拍一区| 国产黄人亚洲片| 久久婷婷综合激情| 国产精品888| 国产精品美女久久久久久久| 国产一区二区三区高清播放| 亚洲精品在线电影| 极品瑜伽女神91| 国产日韩欧美综合在线| 91视频精品在这里| 亚洲视频在线一区观看| 成人爱爱电影网址| 亚洲婷婷在线视频| 欧美三级在线看| 丝袜脚交一区二区| 欧美变态口味重另类| 久久99国内精品| av资源网一区| 精品久久久久久无| 国产精品综合久久| 日韩一区欧美小说| 在线视频欧美区| 日韩精品一级中文字幕精品视频免费观看| 日本大香伊一区二区三区| 亚洲成av人片在www色猫咪| 欧美人体做爰大胆视频| 久色婷婷小香蕉久久| 久久久久久久久伊人| 97精品电影院| 日韩精品电影在线观看| 精品不卡在线视频| 91偷拍与自偷拍精品| 偷拍日韩校园综合在线| 精品处破学生在线二十三| 成人av电影在线网| 亚洲不卡av一区二区三区| 精品国产一区二区三区久久久蜜月| 国产91精品在线观看| 亚洲精品免费在线观看| 日韩视频免费观看高清完整版| 国产精品夜夜嗨| 亚洲一区二区美女| 久久影院电视剧免费观看| 97aⅴ精品视频一二三区| 日本sm残虐另类| 国产精品美日韩| 日韩一级大片在线观看| av电影天堂一区二区在线观看| 日韩制服丝袜av| 亚洲天天做日日做天天谢日日欢 | 国产在线国偷精品免费看| 国产精品动漫网站| 欧美一级二级三级乱码| 99久久精品国产网站| 美女mm1313爽爽久久久蜜臀| 国产精品视频第一区| 日韩欧美国产麻豆| 欧美图区在线视频| 成人免费毛片嘿嘿连载视频| 奇米精品一区二区三区在线观看一| 国产精品久久久久桃色tv| 欧美成人a视频| 欧美日韩激情一区二区| 不卡一二三区首页| 国产成人av资源| 欧美aa在线视频| 亚洲一卡二卡三卡四卡五卡| 国产精品乱码久久久久久| 精品sm捆绑视频| 欧美一区二区久久| 欧美日韩久久久| 欧洲av在线精品| 色综合视频在线观看| 成人网在线免费视频| 精彩视频一区二区| 精品一二三四区| 日本aⅴ亚洲精品中文乱码| 亚洲一区二区三区在线播放| 国产精品高潮久久久久无| 国产亚洲综合在线| 久久精品一区二区三区av| 久久嫩草精品久久久久| 精品乱人伦一区二区三区| 日韩欧美中文字幕公布| 欧美一区二区三区免费视频| 欧美日韩国产中文| 制服丝袜中文字幕亚洲| 欧美精品久久久久久久久老牛影院| 在线视频你懂得一区| 在线欧美小视频| 欧美优质美女网站| 欧美色网一区二区| 欧美精三区欧美精三区| 在线播放视频一区| 日韩欧美一区二区不卡| 亚洲精品在线一区二区| 久久久久久久久久久久久夜| 中文字幕免费在线观看视频一区| 日本一区二区视频在线| 自拍偷拍欧美激情| 亚洲妇熟xx妇色黄| 蜜桃一区二区三区在线| 激情伊人五月天久久综合| 国产盗摄女厕一区二区三区| 成人精品视频.| 色噜噜久久综合| 欧美精品电影在线播放| 欧美www视频| 亚洲欧美在线视频观看| 亚洲成年人影院| 国产麻豆精品95视频| 成人精品国产免费网站| 色综合久久久久久久| 欧美精品久久99久久在免费线| 精品日韩欧美在线| 国产精品久久久一本精品| 一区二区三区日韩精品视频| 日本不卡在线视频| 国产精品99久| 欧美视频一二三区| 久久亚洲精精品中文字幕早川悠里 | 国产成+人+日韩+欧美+亚洲| 色婷婷av一区二区| 日韩片之四级片| 国产精品久久看| 丝袜美腿一区二区三区| 懂色av中文字幕一区二区三区| 色综合久久中文字幕| 欧美tk丨vk视频| 一区二区三区日韩欧美精品 | 欧美成人一区二区三区在线观看| 国产亲近乱来精品视频| 一区二区三区欧美在线观看| 麻豆91免费观看| 91福利视频久久久久| 欧美精品一区二区不卡| 亚洲国产欧美日韩另类综合| 国产成人av一区| 8v天堂国产在线一区二区| 国产精品久久久久婷婷| 看片的网站亚洲| 欧美日韩国产另类一区| 国产精品剧情在线亚洲| 久久av资源网| 欧美精品第1页| 一区二区三区四区在线| 国产成人av一区二区三区在线 | 日韩欧美高清dvd碟片| 亚洲欧美另类久久久精品| 国内精品伊人久久久久影院对白| 欧美视频一区二区三区| 亚洲三级电影网站| 岛国精品一区二区| 久久久久久久久久久黄色| 国产一区二区三区在线观看免费视频| 色婷婷精品大视频在线蜜桃视频 | 一区二区国产盗摄色噜噜| 国产成人在线视频网址| 日韩午夜在线播放| 亚洲www啪成人一区二区麻豆| 91香蕉视频mp4| 中文字幕永久在线不卡| 国产a视频精品免费观看| 精品福利一区二区三区| 久久国产视频网| 日韩小视频在线观看专区| 日本不卡一区二区三区高清视频| 欧美三级乱人伦电影| 亚洲综合色丁香婷婷六月图片| av亚洲精华国产精华| 国产精品人妖ts系列视频| 国产·精品毛片| 中文字幕av一区二区三区| 成人美女视频在线观看18| 26uuu另类欧美亚洲曰本| 国产美女精品在线|