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

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

?? os_cpu_c.c

?? uCOS-II內(nèi)核分析,在單片機(jī)上實(shí)現(xiàn)uCOS-II的移植,同時(shí)在該操作系統(tǒng)上實(shí)現(xiàn)uart驅(qū)動(dòng)
?? C
字號(hào):
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                               實(shí)時(shí)內(nèi)核
*                                               版權(quán)所有
*
* 文件名 : OS_CPU_C.C
* 作者   : Jean J. Labrosse
* 改編   : 陳是知 北京中軟 2005。1。27
*********************************************************************************************************
*/

#define  OS_CPU_GLOBALS
#include "includes.h"

/*
*********************************************************************************************************
*                                        初始化任務(wù)堆棧
*
* 描述       : 這個(gè)函數(shù)被OSTaskCreate()或OSTaskCreateExt()調(diào)用,以便初始化新創(chuàng)建任務(wù)的堆棧結(jié)構(gòu)。本函數(shù)
*              與處理器高度相關(guān)。
*
* 參數(shù)       : task          指向任務(wù)代碼的指針
*
*              pdata         當(dāng)任務(wù)第一次執(zhí)行時(shí)將要傳入任務(wù)的用戶數(shù)據(jù)結(jié)構(gòu)指針
*
*              ptos          棧頂指針。ptos指針被默認(rèn)為用戶堆棧入口指針。如果OS_STK_GROWTH被置1,那么,
*                            ptos指向用戶堆棧的最高有效地址。同樣地,如果OS_STK_GROWTH清0,ptos將指向
*                            用戶堆棧的最低有效地址。
*
*              opt           指定可以改變OSTaskStkInit()行為的選項(xiàng)。(見(jiàn)uCOS_II.H for OS_TASK_OPT_???)。
*
* 返回值     : 我修改了原來(lái)的程序,使函數(shù)總是返回用戶堆棧空間的最低有效地址。這樣修改提高了TCB換入換出
*              的效率。
*
* 注意       : 任務(wù)堆棧結(jié)構(gòu):
*
*                                    ---------- -
*                 用戶棧最高地址---->|        | |
*                                    ---------- |
*                                    |   ...  | 仿真堆??臻g
*----------                          ---------- | 每任務(wù)一個(gè)
*|OSTCBCur|               ?C_XBP---->|        | | KEIL自動(dòng)處理
*----------                          ---------- -
*    |                               |空閑間隔|
*    |     -----------------------   ----------                           ----------
*    \---->|OSTCBCur->OSTCBStkPtr|   |?C_XBP低|                    SP---->|        |
*          -----------------------   ----------                           ----------
*                     |              |?C_XBP高|                           |        |
*                     |              ---------- -                         ----------
*                     |              |        | |                         |   .    |
*                     |              ---------- |                         |   .    |
*                     |              |        | |                         |   .    |
*                     |              ---------- |                         ----------
*                     |              |   .    |長(zhǎng)度                       |        | +1
*                     |              |   .    | |                         ----------
*                     |              |   .    | |             OSStack---->|        | 0
*                     |              ---------- |                         ----------
*                     |              |        | |          OSStkStart---->| 不關(guān)心 | -1  低地址
*                     |              ---------- -                         ----------
*                     \------------->|  長(zhǎng)度  | 低地址                   系統(tǒng)硬件堆棧
*                                    ----------
*                                     用戶堆棧                       長(zhǎng)度=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沒(méi)被用到,保留此語(yǔ)句防止告警產(chǎn)生    
    stk    = (OS_STK *)ptos;                    //用戶堆棧最低有效地址
    *stk++ = 15;                                //用戶堆棧長(zhǎng)度
    *stk++ = (INT16U)task & 0xFF;               //任務(wù)地址低8位
    *stk++ = (INT16U)task >> 8;                 //任務(wù)地址高8位    
    *stk++ = 0x00;                              //PSW
    *stk++ = 0x0A;                              //ACC
    *stk++ = 0x0B;                              //B
    *stk++ = 0x00;                              //DPL
    *stk++ = 0x00;                              //DPH
    *stk++ = 0x00;                              //R0
    
	//R3、R2、R1用于傳遞任務(wù)參數(shù)ppdata,其中R3代表存儲(chǔ)器類型,R2為高字節(jié)偏移,R1為低字節(jié)位移。
	//通過(guò)分析KEIL匯編,了解到任務(wù)的void *ppdata參數(shù)恰好是用R3、R2、R1傳遞,不是通過(guò)虛擬堆棧。
    *stk++ = (INT16U)ppdata & 0xFF;             //R1
    *stk++ = (INT16U)ppdata >> 8;               //R2
    *stk++ = 0x01;                              //R3  因?yàn)槲矣玫娜荴DATA,所以存儲(chǔ)器類型固定為1,見(jiàn)C51.PDF第178頁(yè)說(shuō)明。

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

#if OS_CPU_HOOKS_EN
/*
*********************************************************************************************************
*                                          任務(wù)創(chuàng)建鉤掛函數(shù)
*
* 描述       : 任務(wù)創(chuàng)建時(shí)調(diào)用
*
* 參數(shù)       : ptcb是指向?qū)⒈粍?chuàng)建任務(wù)的任務(wù)控制塊的指針。
*
* 注意       : 1) 調(diào)用期間中斷被禁止
*********************************************************************************************************
*/
void OSTaskCreateHook (OS_TCB *ptcb) reentrant
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}


/*
*********************************************************************************************************
*                                          任務(wù)刪除鉤掛函數(shù)
*
* 描述       : 任務(wù)刪除時(shí)調(diào)用
*
* 參數(shù)       : ptcb是指向?qū)⒈粍h除任務(wù)的任務(wù)控制塊的指針。
*
* 注意       : 1) 調(diào)用期間中斷被禁止
*********************************************************************************************************
*/
void OSTaskDelHook (OS_TCB *ptcb) reentrant
{
    ptcb = ptcb;                       /* Prevent compiler warning                                     */
}

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

/*
*********************************************************************************************************
*                                          統(tǒng)計(jì)任務(wù)鉤掛函數(shù)
*
* 描述       : 這個(gè)函數(shù)每秒鐘被uC/OS-II統(tǒng)計(jì)任務(wù)調(diào)用。這么做使你的應(yīng)用程序可以增加統(tǒng)計(jì)任務(wù)的功能。
*
* 注意       : 無(wú)
*********************************************************************************************************
*/
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


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

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产剧场电影| 欧美日韩精品电影| 欧美在线视频日韩| 欧美一激情一区二区三区| 精品国产精品网麻豆系列| xf在线a精品一区二区视频网站| 欧美刺激脚交jootjob| 国产精品入口麻豆原神| 丝袜脚交一区二区| 成人午夜精品一区二区三区| 欧美日韩久久久| 欧美韩国日本不卡| 日韩 欧美一区二区三区| 成人18精品视频| 日韩欧美国产三级电影视频| 亚洲欧美日韩在线播放| 蜜臀久久99精品久久久画质超高清| 不卡的av电影在线观看| 欧美一级xxx| 偷窥少妇高潮呻吟av久久免费| 国产成人精品一区二| 337p亚洲精品色噜噜| 中文字幕人成不卡一区| 另类欧美日韩国产在线| 欧美一a一片一级一片| 国产午夜精品久久久久久久| 青青国产91久久久久久| 欧美亚洲国产怡红院影院| 国产欧美一区二区三区在线看蜜臀| 午夜国产精品影院在线观看| 九九热在线视频观看这里只有精品| av日韩在线网站| 欧美极品xxx| 国产精品一级黄| 日韩欧美一区二区三区在线| 午夜精品视频在线观看| 91国偷自产一区二区开放时间 | 轻轻草成人在线| 欧美色图在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 国产专区欧美精品| 欧美大片在线观看| 丝袜诱惑制服诱惑色一区在线观看| 99视频一区二区| 中文字幕视频一区| 99亚偷拍自图区亚洲| 中文字幕一区二区三区乱码在线| 国产盗摄视频一区二区三区| 久久久精品免费观看| 极品少妇xxxx精品少妇偷拍| 日韩一区二区三区高清免费看看| 日韩福利视频网| 911精品产国品一二三产区| 首页欧美精品中文字幕| 欧美日韩国产色站一区二区三区| 亚洲一区影音先锋| 欧美区视频在线观看| 日本美女一区二区三区视频| 欧美一区二区三区小说| 狠狠色狠狠色综合| 国产精品人成在线观看免费| 91麻豆精品一区二区三区| 久久久久久麻豆| 99精品视频在线播放观看| 最新热久久免费视频| 91黄色免费看| 视频一区视频二区在线观看| 欧美成人女星排名| 成人午夜免费电影| 亚洲综合色在线| 精品国产99国产精品| 国产精品一区免费在线观看| 亚洲三级免费观看| 欧美日韩一二区| 免费一级片91| 激情国产一区二区 | 在线播放亚洲一区| 午夜激情久久久| 久久精品水蜜桃av综合天堂| av在线播放不卡| 性久久久久久久久| 久久久久成人黄色影片| 国产不卡一区视频| 天天影视涩香欲综合网| 精品欧美久久久| 91丨porny丨中文| 午夜视频在线观看一区二区三区| 精品裸体舞一区二区三区| 国产精品资源网| 亚洲欧美日韩在线不卡| 欧美日韩电影在线| 成年人午夜久久久| 久久精品免费观看| 亚洲蜜臀av乱码久久精品| 欧美成人女星排行榜| 在线免费观看视频一区| 黄页网站大全一区二区| 亚洲成人第一页| 中文字幕不卡一区| 日韩欧美自拍偷拍| av中文字幕不卡| 国内精品伊人久久久久av影院 | 麻豆精品精品国产自在97香蕉| 亚洲国产激情av| 精品日韩一区二区三区| 91成人免费电影| 成人性色生活片| 国产美女娇喘av呻吟久久| 日韩福利视频网| 一区二区三区四区在线免费观看 | 国产又黄又大久久| 亚洲国产精品一区二区www在线| 欧美国产国产综合| 欧美精品一区二区三区蜜桃| 在线播放日韩导航| 91久久香蕉国产日韩欧美9色| 国产麻豆视频一区| 九九热在线视频观看这里只有精品| 亚洲午夜在线观看视频在线| 久久久久久久综合日本| 色哟哟一区二区在线观看 | 久久久久88色偷偷免费| 欧美一级黄色大片| 色偷偷成人一区二区三区91| 成人国产精品免费| 黄一区二区三区| 国产一区二区女| 国产精品一区三区| 国产成人亚洲综合a∨猫咪| 国产精品 日产精品 欧美精品| 麻豆91在线观看| 狠狠色丁香婷婷综合| 国产中文字幕一区| 国产黄色成人av| 成人免费视频视频在线观看免费| 国产成人精品免费视频网站| 国产精品一区在线观看乱码| 成人免费观看男女羞羞视频| 久久99久国产精品黄毛片色诱| 偷拍一区二区三区四区| 美脚の诱脚舐め脚责91| 国产在线观看免费一区| 国产成人精品亚洲日本在线桃色| 国产成人免费视频一区| 99久久精品国产导航| 欧美视频一区二区在线观看| 欧美精品三级在线观看| 日韩三级av在线播放| 91麻豆精品国产自产在线| 欧美羞羞免费网站| 欧美视频在线一区| 精品三级在线看| 亚洲欧洲国产日韩| 午夜精品123| 狠狠色丁香婷婷综合| av动漫一区二区| 欧美日韩一区视频| 日韩欧美亚洲国产另类| 久久久国际精品| 亚洲一区国产视频| 国产一区二区按摩在线观看| 色婷婷综合久色| 日韩欧美二区三区| 国产精品国产三级国产普通话99 | 九九九久久久精品| 成人精品视频一区| 欧美性大战久久| 久久久亚洲精华液精华液精华液| 国产日产亚洲精品系列| 日本一区二区三区免费乱视频 | 91小视频在线| 精品少妇一区二区三区在线视频 | 国产精品 欧美精品| 欧美精选午夜久久久乱码6080| 国产精品视频一二三| 久草这里只有精品视频| 欧美精选一区二区| 亚洲国产成人av好男人在线观看| 国产成人h网站| 久久久综合视频| 激情综合网av| 精品少妇一区二区三区在线播放| 日韩经典一区二区| 欧美日韩在线直播| 亚洲最新视频在线播放| 99久免费精品视频在线观看 | 欧美一卡二卡三卡| 一区二区三区中文字幕| 不卡一二三区首页| 国产精品久久久爽爽爽麻豆色哟哟 | 激情六月婷婷综合| 欧美刺激午夜性久久久久久久| 免费人成精品欧美精品| 欧美福利一区二区| 日韩精品三区四区| 欧美一级高清大全免费观看| 日韩精品久久久久久| 欧美一区三区四区| 久久成人综合网| 国产亚洲午夜高清国产拍精品|