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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? os_cpu_c.c

?? keil編譯器下uocs在lpc2214上的移植
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
* Note(s)    : 1) Interrupts are disabled during this call.
*              2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
*                 will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
*                 task being switched out (i.e. the preempted task).
*********************************************************************************************************
*/
#if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
void  OSTaskSwHook (void)
{
#if OS_CPU_FPU_EN > 0
    void  *pblk;
#endif

#if OS_CPU_FPU_EN > 0                                      /* Save VFP context of preempted task       */
    if (OSRunning == OS_TRUE) {                            /* Don't save on OSStart()!                 */
        if (OSTCBCur->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {    /* See if task used FP                      */
            pblk = OSTCBCur->OSTCBExtPtr;                  /* Yes, Get pointer to FP storage area      */
            if (pblk != (void *)0) {                       /*      Make sure we have storage           */
                OS_CPU_FP_Save(pblk);                      /*      Save the VFP registers in block     */
            }
        }
    }
                                                           /* Restore VFP context of new task          */
    if (OSTCBHighRdy->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {    /* See if new task uses FP                  */
        pblk = OSTCBHighRdy->OSTCBExtPtr;                  /* Yes, Get pointer to FP storage area      */
        if (pblk != (void *)0) {                           /*      Make sure we have storage           */
            OS_CPU_FP_Restore(pblk);                       /*      Get contents of VFP registers       */
        }
    }
#endif

#if OS_APP_HOOKS_EN > 0
    App_TaskSwHook();
#endif
}
#endif

/*
*********************************************************************************************************
*                                           OS_TCBInit() HOOK
*
* Description: This function is called by OS_TCBInit() after setting up most of the TCB.
*
* Arguments  : ptcb    is a pointer to the TCB of the task being created.
*
* Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSTCBInitHook (OS_TCB *ptcb)
{
#if OS_APP_HOOKS_EN > 0
    App_TCBInitHook(ptcb);
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
#endif


/*
*********************************************************************************************************
*                                               TICK HOOK
*
* Description: This function is called every tick.
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
*********************************************************************************************************
*/
#if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
void  OSTimeTickHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TimeTickHook();
#endif

#if OS_TMR_EN > 0
    OSTmrCtr++;
    if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
        OSTmrCtr = 0;
        OSTmrSignal();
    }
#endif

#if OS_CPU_ARM_DCC_EN > 0
    OSDCC_Handler();
#endif
}
#endif


/*
*********************************************************************************************************
*                             INTERRUPT DISABLE TIME MEASUREMENT, START
*********************************************************************************************************
*/

#if OS_CPU_INT_DIS_MEAS_EN > 0
void  OS_CPU_IntDisMeasInit (void)
{
    OS_CPU_IntDisMeasNestingCtr = 0;
    OS_CPU_IntDisMeasCntsEnter  = 0;
    OS_CPU_IntDisMeasCntsExit   = 0;
    OS_CPU_IntDisMeasCntsMax    = 0;
    OS_CPU_IntDisMeasCntsDelta  = 0;
    OS_CPU_IntDisMeasCntsOvrhd  = 0;
    OS_CPU_IntDisMeasStart();                                           /* Measure the overhead of the functions                    */
    OS_CPU_IntDisMeasStop();
    OS_CPU_IntDisMeasCntsOvrhd  = OS_CPU_IntDisMeasCntsDelta;
}


void  OS_CPU_IntDisMeasStart (void)
{
    OS_CPU_IntDisMeasNestingCtr++;
    if (OS_CPU_IntDisMeasNestingCtr == 1) {                             /* Only measure at the first nested level                   */
        OS_CPU_IntDisMeasCntsEnter = OS_CPU_IntDisMeasTmrRd();
    }
}


void  OS_CPU_IntDisMeasStop (void)
{
    OS_CPU_IntDisMeasNestingCtr--;                                      /* Decrement nesting ctr                                    */
    if (OS_CPU_IntDisMeasNestingCtr == 0) {
        OS_CPU_IntDisMeasCntsExit  = OS_CPU_IntDisMeasTmrRd();
        OS_CPU_IntDisMeasCntsDelta = OS_CPU_IntDisMeasCntsExit - OS_CPU_IntDisMeasCntsEnter;
        if (OS_CPU_IntDisMeasCntsDelta > OS_CPU_IntDisMeasCntsOvrhd) {  /* Ensure overhead < delta                                  */
            OS_CPU_IntDisMeasCntsDelta -= OS_CPU_IntDisMeasCntsOvrhd;
        } else {
            OS_CPU_IntDisMeasCntsDelta  = OS_CPU_IntDisMeasCntsOvrhd;
        }
        if (OS_CPU_IntDisMeasCntsDelta > OS_CPU_IntDisMeasCntsMax) {    /* Track MAXIMUM                                            */
            OS_CPU_IntDisMeasCntsMax = OS_CPU_IntDisMeasCntsDelta;
        }
    }
}
#endif


/*
*********************************************************************************************************
*                                     INITIALIZE EXCEPTION VECTORS
*
* Description : This function initialize exception vectors to the default handlers.
*
* Arguments   : None.
*********************************************************************************************************
*/

void  OS_CPU_InitExceptVect (void)
{
/*
    (*(INT32U *)OS_CPU_ARM_EXCEPT_RESET_VECT_ADDR)             =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_RESET_HANDLER_ADDR)          = (INT32U)OS_CPU_ARM_ExceptResetHndlr;
*/

    (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_VECT_ADDR)       =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_HANDLER_ADDR)    = (INT32U)OS_CPU_ARM_ExceptUndefInstrHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptSwiHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_VECT_ADDR)    =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptPrefetchAbortHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_VECT_ADDR)        =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_HANDLER_ADDR)     = (INT32U)OS_CPU_ARM_ExceptDataAbortHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_VECT_ADDR)        =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_HANDLER_ADDR)     = (INT32U)OS_CPU_ARM_ExceptAddrAbortHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptIrqHndlr;

    (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
    (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptFiqHndlr;
}
/*
*********************************************************************************************************
*********************************************************************************************************
**                                         uC/OS-II APP HOOKS
*********************************************************************************************************
*********************************************************************************************************
*/

#if (OS_APP_HOOKS_EN > 0)
/*
*********************************************************************************************************
*                                      TASK CREATION HOOK (APPLICATION)
*
* 功能描述: 當(dāng)一個(gè)任務(wù)創(chuàng)建的時(shí)候調(diào)用此函數(shù)(在這里可以插入一個(gè)檢測(cè)程序)
*
* 入口參數(shù): ptcb   指向被創(chuàng)建任務(wù)的任務(wù)控制塊指針
*
* 注意事項(xiàng): 調(diào)用此函數(shù)的時(shí)候中斷是關(guān)閉的,只有OS_APP_HOOKS_EN為1時(shí)才有效,OS_APP_HOOKS_EN為0時(shí)之間簡(jiǎn)單的
*           告訴編譯器ptcb沒(méi)有被實(shí)際應(yīng)用,這樣做是為了消除編譯器的報(bào)警。
*********************************************************************************************************
*/

void  App_TaskCreateHook (OS_TCB *ptcb)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
(void)ptcb;//    OSProbe_TaskCreateHook(ptcb);
#endif
}

/*
*********************************************************************************************************
*                                    TASK DELETION HOOK (APPLICATION)
*
* 功能描述: 當(dāng)一個(gè)任務(wù)刪除的時(shí)候調(diào)用此函數(shù)
*
* 入口參數(shù): ptcb   指向被創(chuàng)建任務(wù)的任務(wù)控制塊指針
*
* 注意事項(xiàng): 調(diào)用此函數(shù)的時(shí)候中斷是關(guān)閉的
*********************************************************************************************************
*/

void  App_TaskDelHook (OS_TCB *ptcb)
{
    (void)ptcb;
}

/*
*********************************************************************************************************
*                                      IDLE TASK HOOK (APPLICATION)
*
* 功能描述: 空閑的時(shí)候OSTaskIdleHook()被調(diào)用時(shí)調(diào)用此函數(shù),你可以在這里加入其他功能例如CPU進(jìn)入省電模式等等
*
* 入口參數(shù): 無(wú)
*
* 注意事項(xiàng): 調(diào)用此函數(shù)的時(shí)候中斷是開(kāi)啟的
*********************************************************************************************************
*/

#if OS_VERSION >= 251
void  App_TaskIdleHook (void)
{
}
#endif

/*
*********************************************************************************************************
*                                        STATISTIC TASK HOOK (APPLICATION)
*
* 功能描述:  OSTaskStatHook()調(diào)用這個(gè)函數(shù),這個(gè)函數(shù)每秒都要被uC/OS-II的統(tǒng)計(jì)任務(wù)調(diào)用。這樣你就可以在統(tǒng)計(jì)任務(wù)
             中加入新功能了
*
* 入口參數(shù): 無(wú)
*********************************************************************************************************
*/

void  App_TaskStatHook (void)
{
}

/*
*********************************************************************************************************
*                                        TASK SWITCH HOOK (APPLICATION)
*
* Description : This function is called when a task switch is performed.  This allows you to perform other
*               operations during a context switch.
*
* Argument(s) : none.
*
* Note(s)     : (1) Interrupts are disabled during this call.
*
*               (2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
*                   will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
*                  task being switched out (i.e. the preempted task).
* 功能描述:  當(dāng)一個(gè)任務(wù)執(zhí)行完畢的時(shí)候調(diào)用這個(gè)函數(shù)。他允許你在上下文切換的過(guò)程中執(zhí)行其他操作。
*
* 入口參數(shù): 無(wú)
* 注意事項(xiàng): (1)調(diào)用這個(gè)函數(shù)的時(shí)候重點(diǎn)是禁止的。
			(2)她假定全局指針'OSTCBHighRdy' 指向任務(wù)的TCB那樣將被切換到(i.e. the highest priority task),
			 'OSTCBCur'指向的任務(wù)被切換出(i.e. the preempted task).
*********************************************************************************************************
*/

#if OS_TASK_SW_HOOK_EN > 0
void  App_TaskSwHook (void)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
//;    OSProbe_TaskSwHook();
#endif
}
#endif

/*
*********************************************************************************************************
*                                     OS_TCBInit() HOOK (APPLICATION)
*
* Description : This function is called by OSTCBInitHook(), which is called by OS_TCBInit() after setting
*               up most of the TCB.
*
* Argument(s) : ptcb    is a pointer to the TCB of the task being created.
*
* Note(s)     : (1) Interrupts may or may not be ENABLED during this call.
*********************************************************************************************************
*/

#if OS_VERSION >= 204
void  App_TCBInitHook (OS_TCB *ptcb)
{
    (void)ptcb;
}
#endif

/*
*********************************************************************************************************
*                                        TICK HOOK (APPLICATION)
*
* Description : This function is called every tick.
*
* Argument(s) : none.
*
* Note(s)     : (1) Interrupts may or may not be ENABLED during this call.
*********************************************************************************************************
*/

#if OS_TIME_TICK_HOOK_EN > 0
void  App_TimeTickHook (void)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
;//    OSProbe_TickHook();
#endif
}
#endif
#endif



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产污网站| 26uuu久久综合| 亚洲欧美激情小说另类| 成人激情综合网站| 亚洲少妇最新在线视频| 色综合夜色一区| 午夜在线电影亚洲一区| 91精品国产欧美一区二区| 久久99久久99| 欧美国产精品久久| 91久久香蕉国产日韩欧美9色| 亚洲最大的成人av| 制服丝袜中文字幕一区| 精彩视频一区二区三区| 日本一区二区三区dvd视频在线| aaa国产一区| 亚洲国产精品自拍| 日韩欧美激情四射| 成人av网址在线| 性做久久久久久久免费看| 欧美大尺度电影在线| 成人网页在线观看| 亚洲成av人片在www色猫咪| 精品国产99国产精品| 97精品久久久久中文字幕| 视频一区二区欧美| 中文字幕av一区二区三区高| 日本精品一区二区三区高清| 日韩电影一二三区| 国产精品美女久久久久久久久| 在线观看一区二区精品视频| 青娱乐精品视频| 中文字幕一区日韩精品欧美| 欧美美女黄视频| 成人激情校园春色| 天堂成人免费av电影一区| 中文成人综合网| 3751色影院一区二区三区| 成人精品鲁一区一区二区| 石原莉奈在线亚洲二区| 国产精品乱码妇女bbbb| 91麻豆精品国产91久久久久| heyzo一本久久综合| 麻豆一区二区三| 亚洲永久免费av| 中日韩免费视频中文字幕| 日韩写真欧美这视频| 日本高清不卡在线观看| 国产精品99久久久久久久女警| 视频在线观看一区二区三区| 国产精品久久久久久久久免费相片| 6080yy午夜一二三区久久| 色综合久久久久网| 国产美女主播视频一区| 日本中文字幕一区二区视频| 一区二区三区加勒比av| 国产精品免费久久久久| 亚洲精品一区二区三区在线观看| 欧美日韩aaa| 91老师片黄在线观看| 成人国产在线观看| 国产美女精品人人做人人爽| 人人狠狠综合久久亚洲| 舔着乳尖日韩一区| 亚洲一区二区高清| 亚洲欧美日韩国产手机在线 | 美女诱惑一区二区| 亚洲高清不卡在线观看| 一区二区在线免费| 亚洲欧洲美洲综合色网| 欧美国产日韩在线观看| 久久精品视频一区二区| 久久亚洲精精品中文字幕早川悠里| 777久久久精品| 6080亚洲精品一区二区| 欧美一区二区视频网站| 91精品国产aⅴ一区二区| 51精品国自产在线| 91精品免费观看| 7777精品伊人久久久大香线蕉超级流畅 | 综合色天天鬼久久鬼色| 国产精品另类一区| 成人免费视频在线观看| 亚洲男人天堂一区| 有码一区二区三区| 亚洲午夜免费福利视频| 性做久久久久久久久| 免费观看一级欧美片| 黑人巨大精品欧美一区| 国产成人在线视频播放| 欧美一区二区日韩一区二区| 欧美男生操女生| 日韩一区二区三区电影| 久久一区二区视频| 国产嫩草影院久久久久| 国产精品国产三级国产| 樱花草国产18久久久久| 亚洲一区二区三区爽爽爽爽爽| 肉色丝袜一区二区| 激情综合色综合久久| 粉嫩aⅴ一区二区三区四区| 91天堂素人约啪| 91精选在线观看| 久久久99免费| 一区二区在线观看视频在线观看| 日韩精品欧美精品| 国产电影一区二区三区| 色噜噜狠狠一区二区三区果冻| 欧美日本韩国一区| 国产亚洲一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲国产另类精品专区| 国产成人在线视频免费播放| 在线免费观看日韩欧美| 精品国产123| 亚洲日穴在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人高清av在线| 欧美一区二区三区在线观看| 国产精品麻豆视频| 日本不卡中文字幕| 91在线无精精品入口| 欧美xfplay| 亚洲精品v日韩精品| 国产一区二区三区| 欧美午夜宅男影院| 中文av一区二区| 久99久精品视频免费观看| 91成人看片片| 国产欧美日韩在线| 秋霞电影一区二区| 在线观看免费成人| 欧美国产一区二区在线观看| 轻轻草成人在线| 欧美亚洲综合在线| 国产精品的网站| 国内精品伊人久久久久影院对白| 欧美艳星brazzers| ...xxx性欧美| 国产剧情一区二区| 欧美一区二区日韩| 亚洲v中文字幕| 91视频国产观看| 欧美激情一区二区三区蜜桃视频 | 日韩一级视频免费观看在线| 国内精品伊人久久久久av一坑| 欧美日韩国产影片| 一区二区三区在线免费播放| 国产成人精品免费网站| 精品免费国产二区三区| 美女视频一区二区| 91精品综合久久久久久| 亚洲国产精品久久人人爱蜜臀| 99久久国产综合色|国产精品| 久久精品人人做人人爽人人 | 国产福利一区二区三区视频在线 | 亚洲欧洲精品一区二区三区不卡| 国内精品在线播放| 精品久久人人做人人爰| 免费成人av资源网| 91精品国产综合久久精品麻豆| 亚洲一区二区三区国产| 欧美在线观看视频在线| 亚洲一二三区视频在线观看| 91丨九色porny丨蝌蚪| 亚洲欧美偷拍卡通变态| 色综合久久中文综合久久牛| 亚洲欧洲综合另类| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美日韩综合aⅴ视频| 不卡av在线免费观看| 亚洲视频小说图片| 色综合久久88色综合天天免费| 有码一区二区三区| 欧美日韩色综合| 视频在线观看91| 欧美成人精品福利| 国产精品一级在线| 国产精品视频观看| 色菇凉天天综合网| 亚洲国产精品人人做人人爽| 欧美乱妇一区二区三区不卡视频| 亚欧色一区w666天堂| 欧美tickling挠脚心丨vk| 国产精品一品视频| 中文字幕日本不卡| 精品视频在线免费看| 琪琪久久久久日韩精品| 26uuu国产电影一区二区| 成人h动漫精品一区二| 亚洲一区在线电影| 日韩欧美一区在线| 国产成人av影院| 亚洲激情一二三区| 日韩欧美中文一区二区| 成人黄色网址在线观看| 亚洲国产日韩综合久久精品| 精品捆绑美女sm三区| av一二三不卡影片| 日日夜夜精品视频免费|