新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DIY:給單片機寫個實時操作系統內核!

        DIY:給單片機寫個實時操作系統內核!

        作者: 時間:2016-11-29 來源:網絡 收藏

         
        //線程2讓PC口閃爍
        void Test2(void *p)
        {
        uint8_t i;
        DDRC=0xff;
        PORTC=0XFF;
        SREG|=0X80 ;
        while(1)
        {
        for(i=0;i<8;i++)PORTC=1<
        }
        }

         
        //線程3讓PD口閃爍
        void Test3(void *p)
        {
        uint8_t i;
        DDRD=0XFF;
        PORTD=0xff;
        SREG|=0X80;
        while(1)
        {
        for(i=0;i<8;i++)PORTD=1<
        }
        }

         
        //MAIN函數
        int main(void)
        {
        uint8_t i = 0x77;
        //初始化操作系統
        OS_Init();

         
        //初始化線程控制塊并創建任務
        OS_ThreadInit(&Task1,Test1Stack,STACK_SIZE,5,0);
        OS_ThreadCreate(&Task1,Test1,&i);
        OS_ThreadInit(&Task3,Test3Stack,STACK_SIZE,5,0);
        OS_ThreadCreate(&Task3,Test3,&i);
        OS_ThreadInit(&Task2,Test2Stack,STACK_SIZE,5,0);
        OS_ThreadCreate(&Task2,Test2,&i);
        //初始化定時器
        OS_TimerInit();

         
        //啟動內核
        OS_KernelStart();

         
        //正常的話程序永遠不會執行到這里?。?!
        while(1);
        }

         

         
        OK,開始調試咯!打開PROTEUS連線,LOAD程序,然后運行。。。。

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

        成功同時運行三個流水燈程序!太棒了!接下來在這個內核的支持下你就可以創作你的應用程序了,使用內核提供的線程創建函數你可以創建N多個線程,當然了,必須在內存可接受的范圍內。利用內存分配函數你可以動態申請和釋放內存了。再也不用為DELAY()這種浪費CPU效率的作法郁悶很久了。
        上面所說的所有代碼都開源,想看的同學發郵件到我EMAIL: wfm2012@126.com 索要
        下次有空再作一些應用范例來玩玩

        上一頁 1 2 3 4 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 神木县| 平定县| 九江市| 博兴县| 南平市| 南陵县| 汤阴县| 三明市| 神农架林区| 宝丰县| 庆云县| 崇阳县| 茌平县| 辽宁省| 尚志市| 沽源县| 长白| 岚皋县| 苍梧县| 永新县| 敦化市| 句容市| 留坝县| 垦利县| 宁夏| 鹰潭市| 罗平县| 北宁市| 昌平区| 丘北县| 万全县| 商城县| 扎囊县| 大冶市| 象州县| 三台县| 尼木县| 若羌县| 三穗县| 儋州市| 梅州市|