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

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

?? arm_00_os_core.c

?? 是實時操作系統(tǒng)uc/os的原代碼,寫了頭文件
?? C
?? 第 1 頁 / 共 4 頁
字號:
 while(TempPcb->Next)   //直到結(jié)束
  {
   if(TempPcb==pcb)  //如果找到,
    {
     DeleteFromReadyList(pcb);  //將其從就緒表中刪除
     InsertToSuspendList(pcb);  //插入掛起列表
     OSExitCritical();         //退出臨界段
     if(pcb==OSCurrentPcb)   //如果要掛起的是自己
      {
       OSTaskSwitch();    //則需要運行任務(wù)切換
      }
     return 0;         //返回0,表示成功
    }
   TempPcb=TempPcb->Next;
  }
 return NO_SUCH_A_TASK;   //如果沒找到,則返回錯誤
}
//////////////////////////////////End of function//////////////////////////////////////////////


/**********************************************************************************************
功能:發(fā)送一則消息
入口參數(shù)1:pcb。消息的接收者。指向任務(wù)的pcb的指針。
入口參數(shù)2:pMsg。消息指針。指向消息結(jié)構(gòu)體的指針。
返回:消息是否發(fā)送成功。0:發(fā)送成功;錯誤代碼 NO_SUCH_A_TASK:沒有這個任務(wù);
**********************************************************************************************/
uint32 OSSendMsg(OSpcb * pcb,OSMsg * pMsg)
{
 OSpcb * TempPcb;
 
 OSEnterCritical();    //進入臨界段
 pMsg->Sender=OSCurrentPcb;  //消息的發(fā)送者
 switch(pcb->Status)   //判斷任務(wù)所處的狀態(tài)
  {
   case OSInReadyStatus:  //如果任務(wù)處于就緒態(tài)
    {
     TempPcb=OSReadyList;   //在就緒表中查找
     while(TempPcb->Next)   //搜索整個就緒表
      {
       if(pcb==TempPcb)     //如果找到
        {
    	 pcb->Msg=pMsg;     //將消息放入任務(wù)的消息指針中
         OSExitCritical();  //退出臨界段
         return 0;		    //返回0,發(fā)送消息成功
        }
       TempPcb=TempPcb->Next;      //TempPcb移動到下一個
      }
     //如果在就緒表中找不到該任務(wù),則
     OSExitCritical();       //退出臨界段
     return NO_SUCH_A_TASK;  //返回錯誤代號:沒有這樣的任務(wù)。     
    }

   case OSInDelayStatus:  //如果任務(wù)處于延時態(tài)
    {
     TempPcb=OSDelayList;  //在延時態(tài)表中查找
     while(TempPcb->Next)  //搜索整個延時表
      {
       if(pcb==TempPcb)    //如果找到
        {
         pcb->Msg=pMsg;  //將消息放入任務(wù)的消息指針中
         pcb->Delay=0;   //取消任務(wù)的延時
         DeleteFromDelayList(pcb);  //將任務(wù)從延時列表中刪除
         InsertToReadyList(pcb);    //將任務(wù)插入到就緒表中
         OSExitCritical();          //退出臨界段
         OSTaskSwitch();            //有任務(wù)被喚醒,需要任務(wù)切換
         return 0;                  //返回0,表示發(fā)送消息成功
        }
       TempPcb=TempPcb->Next;      //TempPcb移動到下一個
      }
    //如果在延時表中找不到該任務(wù),則
    OSExitCritical();   //退出臨界段
    return NO_SUCH_A_TASK;  //返回錯誤代號:沒有這樣的任務(wù)。	 
   }
	
   case OSInSuspendStatus:  //如果任務(wù)處于掛起態(tài)
    {
     TempPcb=OSSuspendList;      //在掛起態(tài)表中查找
     while(TempPcb->Next)        //搜索整個掛起態(tài)表
      {	  
       if(pcb==TempPcb)         //如果找到
        {
         pcb->Msg=pMsg;   //將消息放入任務(wù)的消息指針中
         DeleteFromSuspendList(pcb);   //將任務(wù)從掛起態(tài)列表中刪除
         InsertToReadyList(pcb);	    //將任務(wù)插入到就緒表中
         OSExitCritical();     //退出臨界段
         OSTaskSwitch();       //有任務(wù)被喚醒,需要任務(wù)切換
         return 0;             //返回0,表示消息發(fā)送成功
        }
       TempPcb=TempPcb->Next;      //TempPcb移動到下一個
      }
     //如果在掛起態(tài)表中找不到該任務(wù),則
     OSExitCritical();   //退出臨界段
     return NO_SUCH_A_TASK;  //返回錯誤代號:沒有這樣的任務(wù)。
    }
	
   default:   //如果任務(wù)處于其它狀態(tài)
    {
     OSExitCritical();   //退出臨界段
     return NO_SUCH_A_TASK;  //返回錯誤代號:沒有這樣的任務(wù)。
    }
  }
}
//////////////////////////////////End of function//////////////////////////////////////////////

/**********************************************************************************************
功能:定時器0初始化。用來產(chǎn)生10mS的時鐘節(jié)拍。并將其分配為FIQ中斷
入口參數(shù):無。
返回:無。
備注:無。
**********************************************************************************************/
void Timer0Init(void)
{
 T0CTCR=0;   //設(shè)置T0為計數(shù)器模式
 T0TCR=1;    //使能T0
 T0PR=255;  //T0預(yù)分頻器設(shè)置為255,所以T0的計數(shù)時鐘為11059200*5/(255+1)=216000Hz
 T0MR0=MaxOfTimer0;    //匹配寄存器設(shè)置為1/100秒觸發(fā)中斷一次。MaxOfTimer0=216000/100-1										
 T0MCR&=~0x04;
 T0MCR|=0x00000003;     //MR0匹配時,發(fā)生中斷,并且復(fù)位T0
 CopyOfVICIntEnable |= (1<<TIMER0);   //打開TIMER0中斷
 VICIntSelect |=(1<<TIMER0);        //將定時器0分配為FIQ中斷
}
//////////////////////////////////End of function//////////////////////////////////////////////


/**********************************************************************************************
功能:系統(tǒng)時鐘節(jié)拍初始化。用來產(chǎn)生10mS的時鐘節(jié)拍。
入口參數(shù):無。
返回:無。
備注:無。
**********************************************************************************************/
void OSTickInit(void)
{
 Timer0Init();   //調(diào)用函數(shù)Timer0Init()設(shè)置時鐘節(jié)拍
}
//////////////////////////////////End of function//////////////////////////////////////////////



/**********************************************************************************************
顯示ARM_00_OS的數(shù)組
**********************************************************************************************/
const uint8 ARM_00_OS_LOGO[7][78]={
"   __      _____    __      __       _____     _____         ____       __   ",
"  //\\\\    ||~~~\\\\  ||\\\\    //||     //~~~\\\\   //~~~\\\\      //~~~~\\\\   //~~\\\\ ",
" //  \\\\   ||    || || \\\\  // ||    ||    /|| ||    /||    ||      || ||      ",
"||____||  ||===//  ||  \\\\//  ||    ||   / || ||   / ||    ||      ||  \\\\___  ",
"||====||  || \\\\    ||   ~~   ||    ||  /  || ||  /  ||    ||      ||    ~~~\\\\",
"||    ||  ||  \\\\   ||        || ___ \\\\/__//   \\\\/__//  ___ \\\\____//   \\\\___//",
"~~    ~~  ~~   ~~  ~~        ~~ ~~~   ~~~       ~~~    ~~~   ~~~~       ~~~  "
};
///////////////////////////////////////////////////////////////////////////////////////////////


/**********************************************************************************************
功能:操作系統(tǒng)初始化。
入口參數(shù):無。
返回:無。
備注:任務(wù)調(diào)度前,必須調(diào)用該函數(shù)初始化好一些參數(shù)
**********************************************************************************************/
void OSInit(void)
{
 uint32 i;
 const uint8 Title1[]={"SystemIdle"};    //系統(tǒng)空閑任務(wù)的標題

 CopyOfVICIntEnable=0;  //VICIntEnable備份被設(shè)置為0 
// CopyOfFIQEN=0;  //FIQEN備份被設(shè)置為0
// CopyOfIRQEN=0;  //IRQEN備份被設(shè)置為0
 OSEnCrCount=0;  //進入臨界段次數(shù)為0

 prints("",1);
 prints("The MCU type is: LPC",0);  //顯示CPU信息
 print_uint32(CPU_TYPE);
 prints("",1);
 prints("",1);

 OSMemoryInit();   //內(nèi)存初始化
 OSMemoryTest();   //內(nèi)存測試

 OSDeviceBottom.Next=0;    //設(shè)備列表表底初始化
 OSDeviceBottom.User=0;
 OSDeviceBottom.RequestCount=0;
 OSDeviceBottom.DeviceID=0;
 OSDeviceList=&OSDeviceBottom;   //設(shè)備列表初始化指向低部
 
 
//系統(tǒng)空閑任務(wù)(即就緒列表底部)初始化
//系統(tǒng)空閑任務(wù)的優(yōu)先級最低,無其它任務(wù)運行時,就運行系統(tǒng)空閑任務(wù)
//注意,永遠不要掛起系統(tǒng)空閑任務(wù),否則會出錯
  
 OSSystemIdlePcb.Prior=&OSSystemIdlePcb;  //系統(tǒng)初始化,現(xiàn)在只有系統(tǒng)空閑任務(wù)
 OSSystemIdlePcb.Next=0;                  //系統(tǒng)空閑任務(wù)沒有后一個任務(wù)
 OSSystemIdlePcb.Priority=~0;             //系統(tǒng)空閑任務(wù)的優(yōu)先級最低(即0xFFFFFFFF)
 OSSystemIdlePcb.Status=OSInReadyStatus;  //系統(tǒng)空閑任務(wù)永遠處于就緒態(tài)
 OSSystemIdlePcb.Delay=0;                 //系統(tǒng)空閑任務(wù)永遠不得延時
 OSSystemIdlePcb.PID=(uint32)&OSSystemIdlePcb;    //系統(tǒng)空閑任務(wù)的PID
 OSSystemIdlePcb.StackLength=0;           //系統(tǒng)空閑任務(wù)的堆棧長度設(shè)置為0字節(jié),因為空閑任務(wù)并未使用緩沖池
 OSSystemIdlePcb.TotalRunTime=0;          //系統(tǒng)空閑任務(wù)的總運行時間初始化為0
 OSSystemIdlePcb.RunTimeInThisRefreshPeriod=0;      //系統(tǒng)空閑任務(wù)的當(dāng)前運行時間初始化為0
 OSSystemIdlePcb.Msg=0;                   //初始化無接收消息
 OSSystemIdlePcb.WaitFor=0;               //初始化無等待資源
 for(i=0;i<15;i++)      //設(shè)置標題
  {
   OSSystemIdlePcb.Title[i]=Title1[i];
   if(Title1[i]==0)break;
  }
 for(;i<15;i++)    //不足的補空格
  {
   OSSystemIdlePcb.Title[i]=' ';
  }
  
 OSSystemIdlePcb.Title[15]=0;
 TaskAmount=1;               //任務(wù)總數(shù)為1,即只有一個系統(tǒng)空閑任務(wù)
 OSReadyList=&OSReadyListBottom;     //就緒任務(wù)表的起始設(shè)置為OSSReadyListBottom,現(xiàn)在只有一個任務(wù)
 
 
 //掛起態(tài)任務(wù)列表底部初始化
 //該底部是一個短的Pcb,即只有Prior,Next,Delay,Priority,PID這幾個參數(shù)
 //該底部沒有實際的任務(wù)對應(yīng),只是一個空表,方便任務(wù)喚醒時查找任務(wù)使用
 //永遠不要將掛起態(tài)列表底部投入到就緒表中,否則會出錯
 OSSuspendListBottom.Prior=(OSpcb *)&OSSuspendListBottom; //現(xiàn)在只有一個掛起任務(wù),所以前趨指向自己 
 OSSuspendListBottom.Next=(OSpcb *)0;        //掛起態(tài)任務(wù)列表底部沒有下一個任務(wù)
 OSSuspendListBottom.PID=0;         //PID為0
 OSSuspendListBottom.Priority=~0;   //優(yōu)先級最低
 OSSuspendListBottom.Delay=0;       //不得延時
 
 OSSuspendList=(OSpcb *)&OSSuspendListBottom; //掛起列表的起始為列表低部,因為現(xiàn)在只有底部一個
 
 
 //延時態(tài)任務(wù)列表底部初始化
 //該底部是一個短的Pcb,即只有Prior,Next,Delay,Priority,PID這幾個參數(shù)
 //該底部沒有實際的任務(wù)對應(yīng),只是一個空表,方便任務(wù)喚醒時查找任務(wù)使用
 //永遠不要將延時態(tài)列表底部投入到就緒表中,否則會出錯
 OSDelayListBottom.Prior=(OSpcb *)&OSSuspendListBottom; //現(xiàn)在只有一個延時態(tài)任務(wù),所以前趨指向自己 
 OSDelayListBottom.Next=(OSpcb *)0;        //延時態(tài)任務(wù)列表底部沒有下一個任務(wù)
 OSDelayListBottom.PID=0;         //PID為0
 OSDelayListBottom.Priority=~0;   //優(yōu)先級最低
 OSDelayListBottom.Delay=0;       //不得延時
 
 OSDelayList=(OSpcb *)&OSDelayListBottom; //掛起列表的起始為列表低部,因為現(xiàn)在只有底部一個
 
 prints("",1);
 prints("Welcome to",1);
 for(i=0;i<7;i++)              //顯示LOGO
  {
   prints(ARM_00_OS_LOGO[i],1);
  }
 prints("",1);

 prints("Date created: ",0);   //顯示創(chuàng)建日期
 prints(__DATE__,1);
 prints("Time created: ",0);   //顯示創(chuàng)建時間
 prints(__TIME__,1);
 prints("    Designer: Computer00",1);
 prints("     My Blog: Http://computer00.21ic.org",1);
}
//////////////////////////////////End of function//////////////////////////////////////////////

/**********************************************************************************************
功能:釋放所占用的資源。
入口參數(shù):pcb。任務(wù)的進程控制塊地址。
返回:無。
**********************************************************************************************/
void OSFreeResource(OSpcb * pcb)
{
 OSdevice * pDevice;
 pDevice=OSDeviceList;  //從設(shè)備列表頭部開始
 while(pDevice->Next)   //直到設(shè)備列表的表尾
  {
   if(pDevice->User==pcb)  //如果該設(shè)備被該任務(wù)使用,
    {
     OSFreeDevice((uint32)pDevice);   //則釋放它
    }
  }
}
//////////////////////////////////End of function//////////////////////////////////////////////


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区激情在线| 国产精品青草久久| 亚洲视频电影在线| 成人av免费观看| 亚洲国产高清不卡| 成人av在线观| 亚洲色图在线视频| 在线观看亚洲精品视频| 亚洲精品国产精品乱码不99 | 亚洲男人都懂的| av不卡在线观看| 亚洲色图视频网站| 欧美日韩精品一区二区天天拍小说| 亚洲成人一区在线| 日韩精品一区二区三区swag| 国产99久久久国产精品免费看| 国产精品久久久久久久第一福利 | 国产精品灌醉下药二区| 国产69精品一区二区亚洲孕妇 | 国产99久久久精品| 中文字幕在线播放不卡一区| 在线观看av一区二区| 亚洲va国产天堂va久久en| 日韩免费高清电影| 粉嫩一区二区三区性色av| 亚洲欧美日韩小说| 日韩三级精品电影久久久| 国产成人精品综合在线观看| 一区二区三区四区激情| 欧美一级久久久久久久大片| 国产成人超碰人人澡人人澡| 亚洲综合色区另类av| 久久免费美女视频| 在线观看国产一区二区| 国产美女精品人人做人人爽 | 欧美视频中文一区二区三区在线观看| 免费的成人av| 亚洲免费观看在线视频| 日韩欧美国产综合| 色哦色哦哦色天天综合| 国产一区二区三区精品视频| 亚洲最新在线观看| 久久亚洲精精品中文字幕早川悠里 | 亚洲欧洲一区二区在线播放| 91精品蜜臀在线一区尤物| 99久久伊人网影院| 青青草成人在线观看| 亚洲免费在线视频| 亚洲不卡av一区二区三区| 欧美不卡激情三级在线观看| 色婷婷av久久久久久久| 国内精品久久久久影院一蜜桃| 亚洲欧美综合色| 色综合久久综合网欧美综合网| 日韩avvvv在线播放| 亚洲视频小说图片| 国产午夜精品久久久久久免费视| 欧美美女喷水视频| 91热门视频在线观看| 国产91在线|亚洲| 美女高潮久久久| 亚洲观看高清完整版在线观看| 亚洲视频你懂的| 国产农村妇女精品| 久久中文字幕电影| 欧美电视剧在线看免费| 欧美精品亚洲一区二区在线播放| 日本精品一区二区三区高清| 懂色av中文一区二区三区| 国内一区二区在线| 看电视剧不卡顿的网站| 日韩福利视频网| 日日摸夜夜添夜夜添国产精品| 亚洲综合在线电影| 亚洲激情欧美激情| 亚洲欧美日韩在线不卡| 亚洲免费观看高清完整版在线观看| 欧美高清在线一区二区| 欧美激情在线看| 中文字幕精品一区二区精品绿巨人 | av在线不卡电影| 成人国产电影网| av网站一区二区三区| 成人激情免费电影网址| 北岛玲一区二区三区四区| 成人激情综合网站| www.日韩精品| 色偷偷成人一区二区三区91| 欧洲色大大久久| 欧美三区在线观看| 欧美浪妇xxxx高跟鞋交| 欧美一区二区三区影视| 精品剧情在线观看| 国产午夜精品福利| 1区2区3区国产精品| 亚洲精品视频观看| 日韩精品一卡二卡三卡四卡无卡| 美日韩一级片在线观看| 精品一区二区三区免费观看| 国产成人精品一区二| 粉嫩在线一区二区三区视频| 色呦呦国产精品| 欧美日韩精品一二三区| 日韩美女天天操| 欧美国产国产综合| 亚洲一二三专区| 日本美女视频一区二区| 国产高清亚洲一区| 99re这里只有精品首页| 欧美群妇大交群中文字幕| 欧美va亚洲va国产综合| 中文字幕在线不卡国产视频| 亚洲成人一区在线| 国产精品一区二区在线看| 色综合色综合色综合色综合色综合 | 亚洲一区二区三区中文字幕 | 美女网站在线免费欧美精品| 丁香五精品蜜臀久久久久99网站| 欧美亚洲一区二区在线| 精品久久久久久久久久久久久久久 | 丰满放荡岳乱妇91ww| 亚洲国产视频直播| 麻豆专区一区二区三区四区五区| 粉嫩嫩av羞羞动漫久久久| 日本高清视频一区二区| 精品国产伦理网| 亚洲品质自拍视频| 精品在线播放午夜| 色婷婷综合久色| 精品粉嫩超白一线天av| 一区二区三区精品视频在线| 国产一区999| 欧美视频在线一区| 国产精品美女久久久久aⅴ | 亚洲欧洲www| 精品亚洲国内自在自线福利| 91伊人久久大香线蕉| 日韩欧美电影在线| 一区二区激情小说| 东方aⅴ免费观看久久av| 欧美挠脚心视频网站| 一区二区中文视频| 国产精品一区在线观看乱码| 中文字幕乱码日本亚洲一区二区| 亚洲大型综合色站| av一区二区三区黑人| xnxx国产精品| 日本伊人色综合网| 91九色最新地址| 国产精品久久久久久久久久免费看| 日韩av电影免费观看高清完整版 | 喷水一区二区三区| 在线欧美日韩精品| 国产精品高潮呻吟| 国产成人免费网站| 精品国产亚洲在线| 免费人成精品欧美精品| 欧美电影影音先锋| 一区二区在线看| 91同城在线观看| 国产精品狼人久久影院观看方式| 国产在线看一区| 日韩一区二区在线看| 日韩中文欧美在线| 欧美久久久一区| 亚洲不卡av一区二区三区| 91九色02白丝porn| 亚洲精品欧美激情| 色婷婷精品大在线视频 | 99久久er热在这里只有精品66| 欧美激情资源网| 盗摄精品av一区二区三区| 久久久综合精品| 国产一区二区三区蝌蚪| 久久青草欧美一区二区三区| 黄色日韩三级电影| 久久久国产午夜精品| 国产精品456| 欧美高清在线一区二区| 国产成人精品影院| 中文字幕日韩一区二区| 99久久99久久综合| 夜夜操天天操亚洲| 欧美精选午夜久久久乱码6080| 首页综合国产亚洲丝袜| 欧美成人性福生活免费看| 国内久久精品视频| 日本一区二区三区高清不卡| av日韩在线网站| 一区二区成人在线| 88在线观看91蜜桃国自产| 久色婷婷小香蕉久久| 国产亚洲va综合人人澡精品 | 日本成人在线一区| 精品日产卡一卡二卡麻豆| 国产成人福利片| 蜜桃精品视频在线观看| 精品视频123区在线观看| 亚洲综合激情小说| 欧美精品乱码久久久久久|