新聞中心

最小的多線(xiàn)程框架

作者: 時(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)線(xiàn)程的執(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)鍵詞: 框架 線(xiàn)程 最小

評(píng)論


相關(guān)推薦

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

關(guān)閉