色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          最小的多線程框架

          作者: 時(shí)間:2010-05-18 來(lái)源:網(wǎng)絡(luò) 收藏

          case 0:

          break;

          case 8://最高優(yōu)先級(jí)

          //任務(wù)8

          break;

          case 7:

          //任務(wù)7

          break;

          ……

          case 2:

          //任務(wù)2

          break;

          case 1:

          //任務(wù)1

          break;

          }

          }

          }

          六、程序編寫(xiě)方法

          1、主函數(shù)

          void main(void)

          {

          InitialMCU();

          ActObjReadySet = 0;

          while(1){

          ActObjScheduler();

          }

          }

          2、中斷函數(shù)

          void ISR_Timer(void)

          {

          TmrCtr ++;

          if(TmrCtr > 5){//40ms

          TmrCtr = 0;

          ActObjSet(8); //讓定時(shí)執(zhí)行的任務(wù)就緒

          }

          }

          void ISR_AD(void)

          {

          _adf = 0;

          ADValue = _adrh;

          ActObjSet(3);//讓計(jì)算任務(wù)就緒

          }

          3、任務(wù)函數(shù)

          和其它函數(shù)沒(méi)有區(qū)別

          void AlarmOut()

          {

          if(AlarmOutctr > 0){

          AlarmOutctr --;

          PFD_OUT = !PFD_OUT;

          TmrStart(4,15);//1s

          }else{

          ConctrolStat = END_STAT;

          PFD_OUT = 0;

          }

          }

          七、使用任務(wù)調(diào)度的優(yōu)勢(shì)

          1、多個(gè)同時(shí)就緒時(shí),高優(yōu)先級(jí)先執(zhí)行。

          2、高優(yōu)先級(jí),最長(zhǎng)等待時(shí)間是上一個(gè)正執(zhí)行的完成時(shí)間

          3、因?yàn)橹餮h(huán)時(shí)間最長(zhǎng)時(shí)是最長(zhǎng)線程的執(zhí)行時(shí)間,所以有些中斷中執(zhí)行的代碼可以移到任務(wù)中。

          4、可以減少條件語(yǔ)句。

          5、使軟件結(jié)構(gòu)更合理,清晰。

          八、結(jié)語(yǔ):

          本文介紹的方法在HOLTEK系列8位MCU和NXP的LPC900中有數(shù)十個(gè)項(xiàng)目的應(yīng)用。并且在這基礎(chǔ)上把switch改為函數(shù)指針,加上事件隊(duì)列和事件延遲后,在LPC2000的ARM上成功應(yīng)用。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 框架 線程 最小

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉