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

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

?? os_cpu_c.c

?? ucosII操作系統移植源代碼(包括詳細的移植步驟和心得)。
?? C
字號:
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                               實時內核
*                                               版權所有
*
* 文件名 : OS_CPU_C.C
* 作者   : Jean J. Labrosse
* 改編   : 陳是知 北京中軟 2005。1。27
*********************************************************************************************************
*/

#define  OS_CPU_GLOBALS
#include "includes.h"

/*
*********************************************************************************************************
*                                        初始化任務堆棧
*
* 描述       : 這個函數被OSTaskCreate()或OSTaskCreateExt()調用,以便初始化新創建任務的堆棧結構。本函數
*              與處理器高度相關。
*
* 參數       : task          指向任務代碼的指針
*
*              pdata         當任務第一次執行時將要傳入任務的用戶數據結構指針
*
*              ptos          棧頂指針。ptos指針被默認為用戶堆棧入口指針。如果OS_STK_GROWTH被置1,那么,
*                            ptos指向用戶堆棧的最高有效地址。同樣地,如果OS_STK_GROWTH清0,ptos將指向
*                            用戶堆棧的最低有效地址。
*
*              opt           指定可以改變OSTaskStkInit()行為的選項。(見uCOS_II.H for OS_TASK_OPT_???)。
*
* 返回值     : 我修改了原來的程序,使函數總是返回用戶堆棧空間的最低有效地址。這樣修改提高了TCB換入換出
*              的效率。
*
* 注意       : 任務堆棧結構:
*
*                                    ---------- -
*                 用戶棧最高地址---->|        | |
*                                    ---------- |
*                                    |   ...  | 仿真堆棧空間
*----------                          ---------- | 每任務一個
*|OSTCBCur|               ?C_XBP---->|        | | KEIL自動處理
*----------                          ---------- -
*    |                               |空閑間隔|
*    |     -----------------------   ----------                           ----------
*    \---->|OSTCBCur->OSTCBStkPtr|   |?C_XBP低|                    SP---->|        |
*          -----------------------   ----------                           ----------
*                     |              |?C_XBP高|                           |        |
*                     |              ---------- -                         ----------
*                     |              |        | |                         |   .    |
*                     |              ---------- |                         |   .    |
*                     |              |        | |                         |   .    |
*                     |              ---------- |                         ----------
*                     |              |   .    |長度                       |        | +1
*                     |              |   .    | |                         ----------
*                     |              |   .    | |             OSStack---->|        | 0
*                     |              ---------- |                         ----------
*                     |              |        | |          OSStkStart---->| 不關心 | -1  低地址
*                     |              ---------- -                         ----------
*                     \------------->|  長度  | 低地址                   系統硬件堆棧
*                                    ----------
*                                     用戶堆棧                       長度=SP-OSStkStart
*********************************************************************************************************
*/

OS_STK *OSTaskStkInit (void (*task)(void *pd), void *ppdata, OS_STK *ptos, INT16U opt) reentrant
{    
    OS_STK *stk;

    ppdata = ppdata;
    opt    = opt;                               //opt沒被用到,保留此語句防止告警產生    
    stk    = (OS_STK *)ptos;                    //用戶堆棧最低有效地址
    *stk++ = 15;                                //用戶堆棧長度
    *stk++ = (INT16U)task & 0xFF;               //任務地址低8位
    *stk++ = (INT16U)task >> 8;                 //任務地址高8位    
    *stk++ = 0x00;                              //PSW
    *stk++ = 0x0A;                              //ACC
    *stk++ = 0x0B;                              //B
    *stk++ = 0x00;                              //DPL
    *stk++ = 0x00;                              //DPH
    *stk++ = 0x00;                              //R0
    
	//R3、R2、R1用于傳遞任務參數ppdata,其中R3代表存儲器類型,R2為高字節偏移,R1為低字節位移。
	//通過分析KEIL匯編,了解到任務的void *ppdata參數恰好是用R3、R2、R1傳遞,不是通過虛擬堆棧。
    *stk++ = (INT16U)ppdata & 0xFF;             //R1
    *stk++ = (INT16U)ppdata >> 8;               //R2
    *stk++ = 0x01;                              //R3  因為我用的全是XDATA,所以存儲器類型固定為1,見C51.PDF第178頁說明。

    *stk++ = 0x04;                              //R4
    *stk++ = 0x05;                              //R5
    *stk++ = 0x06;                              //R6
    *stk++ = 0x07;                              //R7
                                                //不用保存SP,任務切換時根據用戶堆棧長度計算得出。    
    *stk++ = (INT16U) (ptos+MaxStkSize) >> 8;   //?C_XBP 仿真堆棧指針高8位
    *stk++ = (INT16U) (ptos+MaxStkSize) & 0xFF; //?C_XBP 仿真堆棧指針低8位
        
    return ((void *)ptos);
}

#if OS_CPU_HOOKS_EN
/*
*********************************************************************************************************
*                                          任務創建鉤掛函數
*
* 描述       : 任務創建時調用
*
* 參數       : ptcb是指向將被創建任務的任務控制塊的指針。
*
* 注意       : 1) 調用期間中斷被禁止
*********************************************************************************************************
*/
void OSTaskCreateHook (OS_TCB *ptcb) reentrant
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}


/*
*********************************************************************************************************
*                                          任務刪除鉤掛函數
*
* 描述       : 任務刪除時調用
*
* 參數       : ptcb是指向將被刪除任務的任務控制塊的指針。
*
* 注意       : 1) 調用期間中斷被禁止
*********************************************************************************************************
*/
void OSTaskDelHook (OS_TCB *ptcb) reentrant
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}

/*
*********************************************************************************************************
*                                          任務切換鉤掛函數
*
* 描述       : 執行任務切換時調用。這允許你在上下文切換期間執行其它操作。
*
* 參數       : 無
*
* 注意       : 1) 調用期間中斷被禁止
*              2) 假定全局指針'OSTCBHighRdy'已經指向了將要被換入的任務控制塊(即:最高優先級任務),并且
*                 'OSTCBCur'指向了將被換出的任務(即:當前任務)。
*********************************************************************************************************
*/
void OSTaskSwHook (void) reentrant
{
}

/*
*********************************************************************************************************
*                                          統計任務鉤掛函數
*
* 描述       : 這個函數每秒鐘被uC/OS-II統計任務調用。這么做使你的應用程序可以增加統計任務的功能。
*
* 注意       : 無
*********************************************************************************************************
*/
void OSTaskStatHook (void) reentrant
{
}

/*
*********************************************************************************************************
*                                       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)
{
}
#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)
{
}
#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)reentrant
{
}
#endif

/*
*********************************************************************************************************
*                                           OSTCBInit() 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) reentrant
{
    ptcb = ptcb;                                           /* Prevent Compiler warning                 */
}
#endif


/*
*********************************************************************************************************
*                                          定時鉤掛函數
*
* 描述       : 本函數每一滴答被調用一次。
*
* 參數       : 無
*
* 注意       : 1) 在本調用期間中斷可以或不可以使能。
*********************************************************************************************************
*/
void OSTimeTickHook (void) reentrant
{
}
#endif

//初始化定時器0
void InitTimer0(void) reentrant
{
    TMOD=TMOD&0xF0;
    TMOD=TMOD|0x01;    //模式1(16位定時器),僅受TR0控制
    TH0=0x70;    //定義Tick=50次/秒(即0.02秒/次)
    TL0=0x00;    //OS_CPU_A.ASM  和  OS_TICKS_PER_SEC
    //ET0=1;       //允許T0中斷,此時EA=0(51上電缺省值),中斷還不會發生,滿足在OSStart()前不產生中斷的要求。
    TR0=1;   
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线不卡视频| 欧美系列一区二区| 91黄色免费看| 久久综合九色综合97婷婷| 亚洲欧美日韩国产一区二区三区| 日日夜夜免费精品| 91免费观看在线| 久久免费午夜影院| 免费成人在线网站| 欧美日精品一区视频| 国产精品亲子乱子伦xxxx裸| 日韩成人精品在线观看| 色婷婷久久一区二区三区麻豆| 久久只精品国产| 蜜臀a∨国产成人精品| 在线免费不卡视频| 亚洲视频一区在线观看| 国产suv精品一区二区三区| 欧美mv日韩mv| 偷拍一区二区三区| 欧美性videosxxxxx| 一区二区三区在线观看视频| gogo大胆日本视频一区| 久久精品人人做人人综合| 久久电影网电视剧免费观看| 欧洲在线/亚洲| 亚洲伊人伊色伊影伊综合网| 色婷婷av久久久久久久| 中文字幕一区二区三区四区| 成人性生交大片| 国产亚洲欧美在线| 国产高清视频一区| 欧美国产欧美亚州国产日韩mv天天看完整| 久久精品av麻豆的观看方式| 欧美大片一区二区三区| 美女mm1313爽爽久久久蜜臀| 日韩视频123| 精品一区二区三区影院在线午夜| 日韩美女视频一区二区在线观看| 理论片日本一区| 精品国产三级电影在线观看| 久久国产免费看| 久久精品视频在线看| 不卡一区二区三区四区| 1区2区3区国产精品| 色综合久久天天| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩免费一区二区三区视频| 亚洲午夜电影在线| 3d动漫精品啪啪1区2区免费| 日韩精品成人一区二区三区| 精品美女一区二区| 国产成人午夜精品影院观看视频 | 日本亚洲一区二区| 欧美一区二区三区思思人| 九九视频精品免费| 日本一区二区免费在线 | 国产一区二区福利视频| 国产三级欧美三级| 色综合久久综合网| 青青草国产成人av片免费| 久久久亚洲欧洲日产国码αv| 成人免费三级在线| 亚洲一区二区三区在线播放| 日韩欧美激情在线| 成人福利在线看| 日日摸夜夜添夜夜添精品视频| 精品国产一区二区三区久久影院 | 免费精品视频最新在线| 久久久久久久久久久久久女国产乱| 成人福利视频在线| 三级欧美韩日大片在线看| 日本一区二区三区电影| 欧美日韩一区高清| 成人午夜av电影| 日韩国产高清在线| 亚洲欧美中日韩| 精品少妇一区二区三区在线播放 | 欧美亚洲禁片免费| 久久精工是国产品牌吗| 亚洲欧洲另类国产综合| 欧美刺激午夜性久久久久久久| 成人黄色av电影| 免费观看成人av| 亚洲第一福利视频在线| 国产精品久久久久国产精品日日| 日韩亚洲欧美成人一区| 色嗨嗨av一区二区三区| 国产精品一区二区三区99| 亚洲成人中文在线| 亚洲免费看黄网站| 国产欧美日韩精品一区| 日韩一级二级三级精品视频| 欧美视频一区二区| 91色porny| 成人三级伦理片| 国产一区二区中文字幕| 日本亚洲电影天堂| 亚洲成人av电影在线| 亚洲欧洲性图库| 国产日韩亚洲欧美综合| 亚洲精品在线免费播放| 91精品久久久久久久久99蜜臂| 日本精品免费观看高清观看| eeuss国产一区二区三区| 成人污视频在线观看| 国产精品一级片在线观看| 精品写真视频在线观看| 久久精品99国产精品日本| 美女爽到高潮91| 久久精品国产免费| 精品中文字幕一区二区| 精品伊人久久久久7777人| 久久国产乱子精品免费女| 久久精品国产一区二区| 精品亚洲国产成人av制服丝袜 | 亚洲成av人片在线| 亚洲伦理在线免费看| 亚洲乱码国产乱码精品精可以看| 曰韩精品一区二区| 夜夜嗨av一区二区三区| 午夜在线电影亚洲一区| 五月天婷婷综合| 日本亚洲电影天堂| 久久国产成人午夜av影院| 国产综合色在线视频区| 国产综合色精品一区二区三区| 国产一区二区不卡在线| 国产成人精品综合在线观看| 成人午夜视频网站| 91国偷自产一区二区三区成为亚洲经典 | 国产成人亚洲综合a∨婷婷图片| 国产乱人伦精品一区二区在线观看 | 成人免费小视频| 亚洲一区二区在线视频| 亚洲国产综合视频在线观看| 日韩av一二三| 国产专区欧美精品| eeuss鲁片一区二区三区 | 国产69精品久久久久777| av中文字幕在线不卡| 欧美三级三级三级| 精品日韩在线观看| 亚洲天堂中文字幕| 日韩成人av影视| 成人av第一页| 91 com成人网| 国产精品伦一区| 日韩影视精彩在线| 成人的网站免费观看| 欧美日韩大陆在线| 国产欧美一区二区精品久导航| 亚洲欧美日韩一区二区三区在线观看| 亚洲观看高清完整版在线观看| 九一久久久久久| 一本到不卡免费一区二区| 91精品国产一区二区三区蜜臀| 亚洲国产精品成人综合色在线婷婷 | 日韩av高清在线观看| 福利一区二区在线观看| 欧美女孩性生活视频| 中文字幕欧美日本乱码一线二线| 亚洲国产精品久久不卡毛片| 国产在线播放一区二区三区| 色香蕉成人二区免费| 久久久蜜桃精品| 亚洲va韩国va欧美va精品| 成人精品视频一区二区三区| 日韩一区二区三区视频| 亚洲综合一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 欧美美女一区二区| 亚洲人成网站在线| 国产黄色精品视频| 1区2区3区国产精品| 久久99精品国产91久久来源| 欧美丝袜丝交足nylons| 中文字幕一区二区三区在线不卡| 蜜桃视频在线一区| 欧美三区在线观看| 亚洲欧美一区二区三区国产精品| 国产一区二区在线观看视频| 欧美一区欧美二区| 亚洲综合在线免费观看| 成人爽a毛片一区二区免费| 精品日韩在线一区| 日韩av电影免费观看高清完整版| 欧洲一区二区av| 亚洲老司机在线| 91麻豆精品在线观看| 国产精品久久毛片| 成人黄色小视频在线观看| 久久久国产午夜精品| 国产在线日韩欧美| 精品久久久久一区二区国产| 日韩中文字幕一区二区三区| 欧美丝袜丝交足nylons图片| 一区二区三区在线影院| 一本大道综合伊人精品热热| 亚洲六月丁香色婷婷综合久久|