新聞中心

最小的多線程框架

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

case 0:

break;

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

//任務(wù)8

break;

case 7:

//任務(wù)7

break;

……

case 2:

//任務(wù)2

break;

case 1:

//任務(wù)1

break;

}

}

}

六、程序編寫方法

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); //讓定時執(zhí)行的任務(wù)就緒

}

}

void ISR_AD(void)

{

_adf = 0;

ADValue = _adrh;

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

}

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

和其它函數(shù)沒有區(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)勢

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

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

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

4、可以減少條件語句。

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

八、結(jié)語:

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


上一頁 1 2 下一頁

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

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉