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

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

?? os_cpu_c.c

?? KEIL平臺下,LPC23XX官方的UCOSii的移植文件,包含各種功能的測試程序.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*
*                             (c) Copyright 1992-2007, Micrium, Weston, FL
*                                          All Rights Reserved
*
*                                           Generic ARM Port
*
* File      : OS_CPU_C.C
* Version   : V1.82
* By        : Jean J. Labrosse
*             Jean-Denis Hatier
*
* For       : ARM7 or ARM9
* Mode      : ARM or Thumb
* Toolchain : IAR's EWARM V4.11a and higher
*********************************************************************************************************
*/

#define  OS_CPU_GLOBALS
#include <ucos_ii.h>

/*$PAGE*/
/*
*********************************************************************************************************
*                                             LOCAL CONSTANTS
*
* Note(s) : 1) ARM_MODE_ARM is the CPSR bit mask for ARM Mode
*           2) ARM_MODE_THUMB is the CPSR bit mask for THUMB Mode
*           3) ARM_SVC_MODE_THUMB is the CPSR bit mask for SVC MODE + THUMB Mode
*           4) ARM_SVC_MODE_ARM is the CPSR bit mask for SVC MODE + ARM Mode
            5) OS_NTASKS_FP  establishes the number of tasks capable of supporting floating-point.  One
*              task is removed for the idle task because it doesn't do floating-point at all.
*           6) OS_FP_STORAGE_SIZE  currently allocates 1024 bytes of storage in order to accomodate
*              thirty-two, single precision 32 bit, or sixteen double precision 64 bit VFP registers.
*********************************************************************************************************
*/

#define  ARM_MODE_ARM           0x00000000
#define  ARM_MODE_THUMB         0x00000020

#define  ARM_SVC_MODE_THUMB    (0x00000013L + ARM_MODE_THUMB)
#define  ARM_SVC_MODE_ARM      (0x00000013L + ARM_MODE_ARM)

#define  OS_NTASKS_FP          (OS_MAX_TASKS + OS_N_SYS_TASKS - 1)
#define  OS_FP_STORAGE_SIZE            128L

/*
*********************************************************************************************************
*                                          LOCAL VARIABLES
*********************************************************************************************************
*/

#if OS_TMR_EN > 0
static  INT16U  OSTmrCtr;
#endif

#if OS_CPU_FPU_EN > 0
static  OS_MEM  *OSFPPartPtr;                                           /* Pointer to memory partition for storing FPU registers    */
static  INT32U   OSFPPart[OS_NTASKS_FP][OS_FP_STORAGE_SIZE / sizeof(INT32U)];
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                        INITIALIZE FP SUPPORT
*
* Description: This function initializes the memory partition used to save FPU registers
*              during a context switch.  This function MUST be called AFTER calling
*              OSInit(). OS_CPU_FPU_EN must be defined > 0 in order to compile FPU support into the
*              build.
*
* Arguments  : none
*
* Returns    : none
*
* Note(s)    : 1) Tasks that are to use FP support MUST be created with OSTaskCreateExt().
*              2) For the ARM VFP, 1024 bytes are required to save the VFP context.
*                 The INT32U data type is used to ensure that storage is aligned on a 32-bit boundary.
*              3) If you need to perform floating point operations from within the OSStatTaskHook(),
*                 then you must change the 'Options' attribute for OSTaskCreatExt() when creating
*                 the statistics task. This only applies if OS_TaskStat() was created with OSTaskCreateExt().
*********************************************************************************************************
*/

#if OS_CPU_FPU_EN > 0
void  OS_CPU_FP_Init (void)
{
    INT8U    err;
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN
    OS_TCB  *ptcb;
    void    *pblk;
#endif


    OSFPPartPtr = OSMemCreate(&OSFPPart[0][0], OS_NTASKS_FP, OS_FP_STORAGE_SIZE, &err);

#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN                            /* CHANGE 'OPTIONS' for OS_TaskStat()                       */
    ptcb            = OSTCBPrioTbl[OS_TASK_STAT_PRIO];
    ptcb->OSTCBOpt |= OS_TASK_OPT_SAVE_FP;                              /* Allow floating-point support for Statistic task          */
    pblk            = OSMemGet(OSFPPartPtr, &err);                      /* Get storage for VFP registers                            */
    if (pblk != (void *)0) {                                            /* Did we get a memory block?                               */
        ptcb->OSTCBExtPtr = pblk;                                       /* Yes, Link to task's TCB                                  */
        OS_CPU_FP_Save(pblk);                                           /*      Save the VFP registers in block                     */
    }
#endif
}
#endif

/*
*********************************************************************************************************
*                                       OS INITIALIZATION HOOK
*                                            (BEGINNING)
*
* Description: This function is called by OSInit() at the beginning of OSInit().
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts should be disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookBegin (void)
{
#if OS_TMR_EN > 0
    OSTmrCtr = 0;
#endif
}
#endif

/*
*********************************************************************************************************
*                                       OS INITIALIZATION HOOK
*                                               (END)
*
* Description: This function is called by OSInit() at the end of OSInit().
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts should be disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookEnd (void)
{
#if OS_CPU_INT_DIS_MEAS_EN > 0
    OS_CPU_IntDisMeasInit();
#endif

#if OS_CPU_FPU_EN > 0
    OS_CPU_FP_Init();                                                   /* Initialize support for VFP register save / restore       */
#endif
}
#endif

/*
*********************************************************************************************************
*                                          TASK CREATION HOOK
*
* Description: This function is called when a task is created.
*
* Arguments  : ptcb   is a pointer to the task control block of the task being created.
*
* Note(s)    : 1) Interrupts are disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0
void  OSTaskCreateHook (OS_TCB *ptcb)
{
#if OS_CPU_FPU_EN > 0
    INT8U  err;
    void  *pblk;
#endif


#if OS_CPU_FPU_EN > 0
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {                         /* See if task needs FP support                             */
        pblk = OSMemGet(OSFPPartPtr, &err);                             /* Yes, Get storage for VFP registers                       */
        if (pblk != (void *)0) {                                        /*      Did we get a memory block?                          */
            ptcb->OSTCBExtPtr = pblk;                                   /*      Yes, Link to task's TCB                             */
            OS_CPU_FP_Save(pblk);                                       /*           Save the VFP registers in block                */
        }
    }
#endif

#if OS_APP_HOOKS_EN > 0
    App_TaskCreateHook(ptcb);
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
#endif


/*
*********************************************************************************************************
*                                           TASK DELETION HOOK
*
* Description: This function is called when a task is deleted.
*
* Arguments  : ptcb   is a pointer to the task control block of the task being deleted.
*
* Note(s)    : 1) Interrupts are disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0
void  OSTaskDelHook (OS_TCB *ptcb)
{
#if OS_CPU_FPU_EN > 0
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {                         /* See if task had FP support                               */
        if (ptcb->OSTCBExtPtr != (void *)0) {                           /* Yes, OSTCBExtPtr must not be NULL                        */
            OSMemPut(OSFPPartPtr, ptcb->OSTCBExtPtr);                   /*      Return memory block to free pool                    */
        }
    }
#endif

#if OS_APP_HOOKS_EN > 0
    App_TaskDelHook(ptcb);
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
#endif

/*
*********************************************************************************************************
*                                             IDLE TASK HOOK
*
* Description: This function is called by the idle task.  This hook has been added to allow you to do
*              such things as STOP the CPU to conserve power.
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts are enabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
void  OSTaskIdleHook (void)
{
#if OS_CPU_ARM_DCC_EN > 0
    OSDCC_Handler();
#endif

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

/*
*********************************************************************************************************
*                                           STATISTIC TASK HOOK
*
* Description: This function is called every second by uC/OS-II's statistics task.  This allows your
*              application to add functionality to the statistics task.
*
* Arguments  : none
*********************************************************************************************************
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人丝袜视频网| 欧洲精品在线观看| 91免费国产在线观看| 日韩一区二区不卡| 一区二区三区中文字幕| 国产精品亚洲一区二区三区在线| 欧美精品一二三| 国产精品成人免费| 国产精品一区二区在线观看网站| 欧美久久久影院| 一区二区三区在线免费观看| 粉嫩av一区二区三区在线播放| 欧美成人欧美edvon| 丝袜亚洲另类丝袜在线| 欧美亚洲禁片免费| 一区二区在线观看免费| av成人免费在线观看| 欧美精品一区二区三区高清aⅴ| 香蕉影视欧美成人| 欧美精品粉嫩高潮一区二区| 亚洲一级二级在线| 欧美性三三影院| 亚洲国产精品久久艾草纯爱| 94色蜜桃网一区二区三区| 国产精品丝袜91| 成人动漫一区二区| 国产精品乱子久久久久| 成人美女在线观看| 中文字幕一区日韩精品欧美| 99在线热播精品免费| 中文字幕一区二区三区不卡在线| 成人免费看片app下载| 日韩一区欧美小说| av影院午夜一区| 亚洲色图视频网站| 91传媒视频在线播放| 亚洲高清不卡在线| 91精品国产色综合久久不卡蜜臀 | 欧美高清视频一二三区| 天天亚洲美女在线视频| 日韩欧美国产一区二区三区| 狠狠色狠狠色综合系列| 国产亚洲成年网址在线观看| 成人动漫视频在线| 亚洲国产欧美另类丝袜| 欧美一区二区久久| 国产成人在线影院| 亚洲免费在线电影| 欧美精三区欧美精三区| 激情欧美一区二区| 亚洲天堂久久久久久久| 欧美人妇做爰xxxⅹ性高电影 | 天天综合日日夜夜精品| 26uuu精品一区二区| 成人av在线一区二区三区| 亚洲一区二区在线播放相泽| 精品少妇一区二区| 成人sese在线| 秋霞电影一区二区| 国产精品欧美一区喷水| 欧美日韩国产另类一区| 国产精品66部| 亚洲成人动漫一区| 久久精品视频一区| 欧美美女bb生活片| 成人av在线资源网站| 日韩 欧美一区二区三区| 国产精品视频线看| 337p亚洲精品色噜噜噜| 成人va在线观看| 久久精品久久精品| 亚洲精品视频一区| 久久免费视频色| 在线成人av网站| www.视频一区| 国产伦精品一区二区三区免费 | 欧美猛男超大videosgay| 国产成人在线观看免费网站| 香蕉成人伊视频在线观看| 国产精品短视频| 久久奇米777| 日韩欧美一二三| 欧美系列日韩一区| 91在线一区二区三区| 国产精品自在在线| 日本va欧美va精品发布| 洋洋成人永久网站入口| 欧美国产97人人爽人人喊| 精品理论电影在线| 欧美蜜桃一区二区三区| 欧美中文字幕亚洲一区二区va在线| 国产成人精品亚洲777人妖| 强制捆绑调教一区二区| 亚洲国产精品久久人人爱蜜臀| 国产精品成人免费在线| 日本一区二区三区四区| 久久久久久9999| 久久青草国产手机看片福利盒子| 日韩视频中午一区| 欧美高清dvd| 欧美剧在线免费观看网站| 欧美视频在线观看一区| 在线精品视频免费播放| 91美女片黄在线观看91美女| 99久久免费视频.com| 波多野结衣中文字幕一区二区三区| 国产精品自拍毛片| 国产精品自在欧美一区| 国产风韵犹存在线视精品| 国内精品伊人久久久久影院对白| 久久精品国产精品亚洲红杏| 免费精品99久久国产综合精品| 日韩精品欧美精品| 美国精品在线观看| 黄色精品一二区| 国产一区二区女| 国产suv一区二区三区88区| 成熟亚洲日本毛茸茸凸凹| www.日韩大片| 欧美综合在线视频| 欧美日韩高清在线| 日韩一区二区视频在线观看| 欧美r级在线观看| 亚洲国产精品精华液2区45| 亚洲欧美偷拍卡通变态| 一片黄亚洲嫩模| 日本欧美在线观看| 精品亚洲免费视频| av电影在线观看一区| 欧美三片在线视频观看| 日韩三级伦理片妻子的秘密按摩| 精品国产乱码久久久久久浪潮 | 亚洲免费资源在线播放| 婷婷久久综合九色综合伊人色| 青青草成人在线观看| 国产一区二区视频在线播放| 成人av综合一区| 欧美午夜精品久久久久久超碰| 欧美肥胖老妇做爰| 久久精品人人做| 亚洲国产一区视频| 韩国视频一区二区| 色乱码一区二区三区88| 日韩欧美一区中文| 国产精品三级av| 亚洲成人午夜电影| 国产精品亚洲成人| 精品视频一区二区三区免费| 精品国产3级a| 男女性色大片免费观看一区二区| 日本一区二区视频在线观看| 亚洲日本在线观看| 日韩国产欧美在线播放| 国产高清精品久久久久| 91成人国产精品| 国产喂奶挤奶一区二区三区| 亚洲永久精品大片| 国产传媒日韩欧美成人| 欧美视频中文一区二区三区在线观看| 精品乱人伦小说| 午夜一区二区三区视频| av在线免费不卡| 精品成人在线观看| 亚洲国产精品一区二区www| 成人精品小蝌蚪| 精品国产一区二区三区av性色| 亚洲综合一二三区| 成人激情校园春色| 久久综合国产精品| 日韩中文字幕不卡| 色94色欧美sute亚洲13| 国产色婷婷亚洲99精品小说| 麻豆91在线观看| 欧美日韩国产大片| 亚洲综合偷拍欧美一区色| 成人少妇影院yyyy| 成人小视频免费观看| 欧美午夜精品免费| 欧美激情一区二区三区四区| 午夜一区二区三区视频| 一本色道久久综合亚洲91 | 成人高清免费观看| 久久综合av免费| 久久成人羞羞网站| 日韩欧美中文一区| 日韩精品91亚洲二区在线观看 | 久久av中文字幕片| 制服丝袜亚洲色图| 亚洲va中文字幕| 欧美性生活影院| 亚洲成人av免费| 欧美日韩你懂得| 亚洲国产日产av| 91精彩视频在线| 亚洲高清视频的网址| 欧美性色黄大片手机版| 亚洲午夜一区二区| 色综合夜色一区| 亚洲欧洲另类国产综合| 成人亚洲一区二区一|