新聞中心

        最小的多線程框架

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

        }

        }

        void ISR_AD(void)

        {

        _adf = 0;

        ADValue = _adrh;

        ActObjSet(3);//讓計(jì)算任務(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、多個(gè)同時(shí)就緒時(shí),高優(yōu)先級先執(zhí)行。

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

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

        4、可以減少條件語句。

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

        八、結(jié)語:

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


        上一頁 1 2 下一頁

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

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 陇川县| 嘉鱼县| 汶上县| 临邑县| 海丰县| 宽城| 同心县| 宁安市| 财经| 武山县| 敦煌市| 黎川县| 麻城市| 石狮市| 图们市| 思南县| 大丰市| 定西市| 阳谷县| 崇礼县| 衡山县| 澳门| 海原县| 贵阳市| 河曲县| 甘孜县| 靖州| 门头沟区| 池州市| 钟山县| 合川市| 阳西县| 闽侯县| 湘乡市| 安阳县| 寻乌县| 平泉县| 全州县| 武穴市| 清徐县| 开阳县|