新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 最小的多線程框架

        最小的多線程框架

        作者: 時間:2010-05-18 來源:網絡 收藏

        case 0:

        break;

        case 8://最高優先級

        //任務8

        break;

        case 7:

        //任務7

        break;

        ……

        case 2:

        //任務2

        break;

        case 1:

        //任務1

        break;

        }

        }

        }

        六、程序編寫方法

        1、主函數

        void main(void)

        {

        InitialMCU();

        ActObjReadySet = 0;

        while(1){

        ActObjScheduler();

        }

        }

        2、中斷函數

        void ISR_Timer(void)

        {

        TmrCtr ++;

        if(TmrCtr > 5){//40ms

        TmrCtr = 0;

        ActObjSet(8); //讓定時執行的任務就緒

        }

        }

        void ISR_AD(void)

        {

        _adf = 0;

        ADValue = _adrh;

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

        }

        3、任務函數

        和其它函數沒有區別

        void AlarmOut()

        {

        if(AlarmOutctr > 0){

        AlarmOutctr --;

        PFD_OUT = !PFD_OUT;

        TmrStart(4,15);//1s

        }else{

        ConctrolStat = END_STAT;

        PFD_OUT = 0;

        }

        }

        七、使用任務調度的優勢

        1、多個同時就緒時,高優先級先執行。

        2、高優先級,最長等待時間是上一個正執行的完成時間

        3、因為主循環時間最長時是最長線程的執行時間,所以有些中斷中執行的代碼可以移到任務中。

        4、可以減少條件語句。

        5、使軟件結構更合理,清晰。

        八、結語:

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


        上一頁 1 2 下一頁

        關鍵詞: 框架 線程 最小

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 马关县| 浪卡子县| 肃宁县| 开封县| 庆安县| 台中市| 新余市| 革吉县| 乌拉特中旗| 青田县| 江都市| 咸宁市| 潜江市| 德兴市| 上饶市| 永顺县| 新乐市| 乐都县| 威远县| 鹤山市| 浠水县| 高淳县| 山阳县| 壤塘县| 鄂托克前旗| 科尔| 西平县| 米泉市| 遂宁市| 固阳县| 松潘县| 肃南| 泰顺县| 驻马店市| 紫阳县| 晋城| 昌黎县| 东辽县| 仙桃市| 津市市| 阆中市|