久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

自己寫單片機操做系統(tǒng)3-任務創(chuàng)建和調(diào)度

作者:huqin   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年01月31日   【字體:
如果存在兩個或以上的任務調(diào)度就需要將棧保CPU的寄存器了。這個地方就是各個MCU不同的地方了。
這個要看MCU進入中斷的流程才能知道棧需要怎么保護。

OS_STK* InitStkBuff(VOID_FUN_PTR task,OS_STK* pstk)
{
   pstk--;        
    *pstk = (U16)(((U32)task) >> 8);    存要執(zhí)行的函數(shù)
    pstk--;                                
    *pstk = 0xFFFF; //IY        存y寄存器
    (pstk)--;
    *pstk = 0x1111; //IX        存x寄存器
    pstk--;
    *pstk = 0xAA;//A;            存A
    ((U8*)pstk)--;        A和B都是8位的在寄存器中是一起放在一個16位中的、
    *pstk = 0xBB; //B        存B
    ((U8*)pstk)--; //在中斷中需要多保存一次page頁,所以需要留一個空間出來
   return pstk;
}
 void CreatTask(VOID_FUN_PTR task,OS_STK *pStk,U8 stkSize,U8 osPior)
{
 OsTaskObjTbl[osPior].Task = task;
 OsTaskObjTbl[osPior].TaskSp = pStk;
 OsTaskObjTbl[osPior].stkSize = stkSize;
 OsTaskObjTbl[osPior].taskDly = 0;
 OsTaskObjTbl[osPior].taskState = TASK_STATE_READY;
 OsTaskObjTbl[osPior].nextTask = IdelTask;
 OsTaskObjTbl[osPior].TaskSp = InitStkBuff(task,pStk);       將修改后的sp給到任務的sp中
}
 任務調(diào)度函數(shù)

void Os_Schel(void)
{
 U8 i;
 OldTask = HeadTask;
 for(i = 0;i < TASK_SIZE;i++)
 {
  if(OsTaskObjTbl[i].taskState == TASK_STATE_READY) 直接查看任務的狀態(tài),是否已經(jīng)就緒
  {
   HeadTask = &OsTaskObjTbl[i];
   break;
  }
 }
 if(i == TASK_SIZE)
 {
  HeadTask = IdelTask;
 }
 
 OS_TASK_SW();啟動軟件中斷進入中斷調(diào)度
}
__interrupt VectorNumber_Vswi void OSCtxSw(void)   //4為SWI中斷
{
    DisableInterrupts;              //關中斷
  // PTP = 0xAA;
   asm{
        ldaa $30                    //保存頁面寄存器,單片機16位最大的flash只能是64k。但是128k需要通過頁面寄存器切換
        psha
        STS Sp_bf            將當前的sp賦值給sp_bf
       }
        OldTask->TaskSp = Sp_bf;    保存sp-bf
    Sp_bf = HeadTask->TaskSp;   取出sp的地址。
   asm{ 
        LDS Sp_bf                將sp-bf給SP  
        pula
        staa $30                  將頁面寄存器恢復
       }
    EnableInterrupts;             //開中斷   
}
這樣一個任務就調(diào)度出來了、
關閉窗口

相關文章

主站蜘蛛池模板: 日韩一区二区三区在线 | 欧美激情久久久 | 久久久久久国产精品免费免费 | 91高清在线观看 | 婷婷色婷婷 | 国产高清在线视频 | 成人在线播放 | 国产一区二区三区四区三区四 | 国产精品一区二区在线 | 亚洲欧美中文字幕 | 色狠狠桃花综合 | 日本特黄a级高清免费大片 国产精品久久性 | 国产91在线 | 亚洲 | 亚洲大片在线观看 | 欧美一级黄色片在线观看 | 性做久久久久久免费观看欧美 | 久久精品91久久久久久再现 | 成人精品一区二区三区中文字幕 | 中文字幕在线精品 | 国产视频久久 | 欧美一级片在线观看 | 精品久久中文字幕 | 91精品久久久久久久久 | 中文字幕中文字幕 | 正在播放亚洲 | 久久精品一区二区三区四区 | 一区二区三区四区在线视频 | 国产91丝袜在线播放 | 全部免费毛片在线播放网站 | 2021狠狠天天天 | 亚洲精品自拍视频 | 天天拍天天草 | 中国人pornoxxx麻豆 | 国产久 | 国产精品一区二区三区在线 | 99久久婷婷国产亚洲终合精品 | 一区二区三区四区在线视频 | 成人午夜激情 | 狠狠狠干| 欧美精品一区二区三区在线 | 一区二区在线不卡 |