新聞中心

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

        多線程框架

        作者: 時間:2011-12-28 來源:網絡 收藏

        case 0:

        本文引用地址:http://www.104case.com/article/172261.htm

        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 下一頁

        關鍵詞: 框架 線程

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富顺县| 页游| 麻江县| 汪清县| 集安市| 藁城市| 山西省| 盐津县| 芒康县| 本溪| 高邮市| 正安县| 寻乌县| 武隆县| 景东| 沭阳县| 吴川市| 雅安市| 衡山县| 兴安县| 盐山县| 名山县| 禹州市| 绵竹市| 伊春市| 浦江县| 泽库县| 开封县| 新竹市| 广东省| 尚志市| 广西| 万盛区| 齐河县| 镶黄旗| 永寿县| 蒙城县| 石阡县| 讷河市| 商南县| 灵石县|