在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ucos-ii學(xué)習筆記——s12 lcd led 兩任務(wù)信號量通信

            ucos-ii學(xué)習筆記——s12 lcd led 兩任務(wù)信號量通信

            作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏

            OSStart();

            }

            staticvoidAppStartTask(void*pdata)

            {

            pdata=pdata;//pdata沒有用到,這樣的目的是防止編譯器提出warning

            AppTickInit();//初始化時鐘滴答,為操作系統(tǒng)提供時鐘

            OSStatInit();//初始化統(tǒng)計任務(wù)

            AppTaskCreate();//創(chuàng)建應(yīng)用任務(wù)

            //AppEventCreate();//建立事件

            while(TRUE)//任務(wù)一般都是一個無限循環(huán)的結(jié)構(gòu)

            {

            OSTimeDlyHMSM(0,0,1,0);//等待1s,交出cpu,由于while無限循環(huán)中只有這一條語句,所以

            //該起始任務(wù)第一次運行以后,就一直處于掛起等待狀態(tài)

            }

            }

            staticvoidAppTaskCreate(void)//使1-f的任務(wù)處于就緒態(tài),一旦OSstart(),優(yōu)先級最高的任務(wù)獲得CPU的使用權(quán)

            {

            //INT8Uerr;//錯誤信息

            OSTaskCreate(lcd_task,(void*)0,&lcd_task_stk[TASK_STK_SIZE-1],6);//創(chuàng)建任務(wù)lcd_task,優(yōu)先級為6

            OSTaskCreate(led_task,(void*)0,&led_task_stk[TASK_STK_SIZE-1],7);

            }

            staticvoidAppEventCreate(void)

            {

            INT8Uerr;

            #ifOS_SEM_EN>0

            EventSem1=OSSemCreate(1);

            OSEventNameSet(EventSem1,"Sem.#1",&err);

            EventSem2=OSSemCreate(1);

            OSEventNameSet(EventSem2,"Sem.#2",&err);

            #endif

            #ifOS_MBOX_EN>0

            EventMbox1=OSMboxCreate((void*)1);

            OSEventNameSet(EventMbox1,"Mailbox#1",&err);

            EventMbox2=OSMboxCreate((void*)1);

            OSEventNameSet(EventMbox2,"Mailbox#2",&err);

            #endif

            #ifOS_Q_EN>0

            EventQ1=OSQCreate(&EventQTbl1[0],EVENT_Q_1_SIZE);

            OSEventNameSet(EventQ1,"Queue#1",&err);

            EventQ2=OSQCreate(&EventQTbl2[0],EVENT_Q_2_SIZE);

            OSEventNameSet(EventQ2,"Queue#2",&err);

            #endif

            #ifOS_MUTEX_EN>0

            EventMutex1=OSMutexCreate(MUTEX_PIP_1,&err);

            OSEventNameSet(EventMutex1,"Mutex#1",&err);

            EventMutex2=OSMutexCreate(MUTEX_PIP_2,&err);

            OSEventNameSet(EventMutex2,"Mutex#2",&err);

            #endif

            #ifOS_FLAG_EN>0

            FlagGrp1=OSFlagCreate(0x00FF,&err);

            OSFlagNameSet(FlagGrp1,"Flag#1",&err);

            FlagGrp2=OSFlagCreate(0xFF00,&err);

            OSFlagNameSet(FlagGrp2,"Flag#2",&err);

            #endif

            #ifOS_MEM_EN>0

            MemPart1=OSMemCreate(&MemPart1Tbl[0],MEM_BLKS_1,MEM_BLK_SIZE_1,&err);

            OSMemNameSet(MemPart1,"Partition#1",&err);

            MemPart2=OSMemCreate(&MemPart2Tbl[0],MEM_BLKS_2,MEM_BLK_SIZE_2,&err);

            OSMemNameSet(MemPart2,"Partition#2",&err);

            #endif

            }

            staticvoidlcd_task(void*pdata)//任務(wù)lcd_task的函數(shù)代碼

            {

            pdata=pdata;//pdata沒有用到,這樣的目的是防止編譯器提出warning

            for(;;)

            {

            OSSemPend(event_sem,0,&err);

            //請求信號量參數(shù)Fun_Semp是信號量指針0那一項是等待時限timeout,0表示無限等待err表示錯誤信息

            delay_ms(5);

            wr_string(0,0,s1);//第一行第一個位置顯示s1

            delay_ms(1000);

            wr_string(0,1,s2);//第一行第一個位置顯示s2

            delay_ms(1000);

            wr_string(0,2,s3);//第一行第一個位置顯示s3

            delay_ms(1000);

            wr_string(0,3,s4);//第一行第一個位置顯示s4

            delay_ms(1000);

            wr_lcd(comm,0x01);//清除顯示全屏清除

            //init_lcd();

            OSSemPost(event_sem);//釋放信號量

            OSTimeDlyHMSM(0,0,1,0);//等待1s,交出cpu,任務(wù)調(diào)度一次防止獨占cpu,讓其他任務(wù)有機會運行

            }

            }

            staticvoidled_task(void*pdata)

            {

            INT8Ui=0;

            pdata=pdata;//pdata沒有用到,這樣的目的是防止編譯器提出warning

            for(;;)

            {

            OSSemPend(event_sem,0,&err);//請求信號量

            for(i=0;i<10;i++)//閃爍10次

            {

            PORTB=0x00;//led閃爍

            delay_ms(500);

            PORTB=0xff;

            delay_ms(500);

            }

            OSSemPost(event_sem);//釋放信號量

            OSTimeDlyHMSM(0,0,0,500);//等待0.5s交出cpu

            }

            }

            //問什么當兩個任務(wù)等待時間相同時(都為1s時),任務(wù)lcd每運行兩次,任務(wù)led才運行一次,當?shù)却龝r間不同時,

            //才交替運行(任務(wù)led的等待時間小于lcd時才正常交替運行)

            //該問題要參考ucos-iifors12mytest工程的任務(wù)調(diào)度等待時間的問題,一塊解決

            staticvoidAppTask1(void*pdata)

            {

            pdata=pdata;

            for(;;)

            {

            Flash_Led(7,1);

            OSTimeDlyHMSM(0,0,1,0);

            }

            }

            staticvoidAppTask2(void*pdata)

            {

            pdata=pdata;

            LcdClear();

            for(;;)

            {

            LcdWriteStr(0,0,"illworkhard");

            OSTimeDlyHMSM(0,0,1,0);

            LcdClear();

            LcdWriteStr(0,0,"ificangetthechance");

            LcdWriteStr(1,0,"ipromisetoyou");

            OSTimeDlyHMSM(0,0,1,0);

            LcdClear();

            }

            }

            staticvoidAppTask3(void*pdata)

            {

            pdata=pdata;

            PWM_Init();//pwm初始化,將23通道級聯(lián)

            LcdClear();

            DDRT=0x00;//將PORTT設(shè)置為輸入

            for(;;)

            {

            LcdWriteStr(0,0,"welcometeacher!");

            PWM_Init();

            PWMDuo_Dutycycle(100);

            OSTimeDlyHMSM(0,0,1,0);

            Close_PWM();

            LcdClear();

            OSTimeDlyHMSM(0,0,0,500);

            }

            }

            staticvoidAppTask4(void*pdata)

            {

            INT8Uerr;

            }

            staticvoidAppTask5(void*pdata)

            {

            INT8Uerr;

            DDRB_DDRB3=1;

            pdata=pdata;

            while(TRUE){

            AppTask5Ctr++;

            #ifOS_Q_EN>0

            OSQPost(EventQ1,(void*)"Msg#3toQ1");

            OSTimeDly(20);

            OSQPost(EventQ2,(void*)"Msg#4toQ2");

            #endif

            OSTimeDly(40);

            PORTB_PB3=~PORTB_PB3;

            }

            }

            staticvoidAppTask6(void*pdata)

            {

            INT8Uerr;

            char*pmsg;

            chars[30];

            pdata=pdata;

            while(TRUE){

            AppTask6Ctr++;

            #ifOS_Q_EN>0

            pmsg=(char*)OSQPend(EventQ1,0,&err);

            strcpy(s,pmsg);

            #endif

            OSTimeDly(1);

            }

            }

            staticvoidAppTask7(void*pdata)

            {

            INT8Uerr;

            char*pmsg;

            chars[30];

            pdata=pdata;

            while(TRUE){

            AppTask7Ctr++;

            #ifOS_Q_EN>0

            pmsg=(char*)OSQPend(EventQ2,0,&err);

            strcpy(s,pmsg);

            #endif

            OSTimeDly(1);

            }

            }

            staticvoidAppTask8(void*pdata)

            {

            INT8Uerr;

            pdata=pdata;

            while(TRUE){

            AppTask8Ctr++;

            #ifOS_FLAG_EN>0

            OSFlagPost(FlagGrp1,0x000F,OS_FLAG_SET,&err);

            OSTimeDly(100);

            OSFlagPost(FlagGrp1,0x00F0,OS_FLAG_SET,&err);

            OSTimeDly(100);

            OSFlagPost(FlagGrp1,0x0F00,OS_FLAG_SET,&err);

            OSTimeDly(100);

            OSFlagPost(FlagGrp1,0xF000,OS_FLAG_SET,&err);

            OSTimeDly(100);

            #endif

            OSTimeDly(1);

            }

            }

            staticvoidAppTask9(void*pdata)

            {

            INT8Uerr;

            pdata=pdata;

            while(TRUE){

            AppTask9Ctr++;

            #ifOS_FLAG_EN>0

            OSFlagPend(FlagGrp1,0x00FF,OS_FLAG_WAIT_SET_ALL+OS_FLAG_CONSUME,100,&err);

            #endif

            OSTimeDly(100);

            }

            }

            staticvoidAppTaskA(void*pdata)

            {

            INT8Uerr;



            評論


            相關(guān)推薦

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

            關(guān)閉