在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ucos-ii學(xué)習(xí)筆記——s12 lcd led 兩任務(wù)信號(hào)量通信

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

            作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
            Createdon:2012-10-17

            Author:zhangbin

            本文引用地址:http://www.biyoush.com/article/201611/322856.htm

            學(xué)習(xí)筆記

            forucos-iiMC9S12XS128lcd12864ser_2_pin

            redesignedbyzhangbin

            2012-10-17

            versions:V-0.1

            AllRightsReserved

            //本程序?qū)崿F(xiàn)lcd的顯示和led的閃爍,這兩個(gè)任務(wù)通過(guò)信號(hào)量進(jìn)行通信,要實(shí)現(xiàn)的效果如下:

            //lcd任務(wù)申請(qǐng)一個(gè)信號(hào)量后顯示完一個(gè)周期后停止顯示并且釋放信號(hào)量,led任務(wù)申請(qǐng)到信號(hào)量后開始閃爍,閃爍了10

            //次后停止,釋放信號(hào)量,lcd任務(wù)再申請(qǐng)信號(hào)量,繼續(xù)開始顯示,如此循環(huán)

            //本程序?qū)崿F(xiàn)lcd的顯示和led的閃爍,這兩個(gè)任務(wù)通過(guò)信號(hào)量進(jìn)行通信,要實(shí)現(xiàn)的效果如下:

            //lcd任務(wù)申請(qǐng)一個(gè)信號(hào)量后顯示完一個(gè)周期后停止顯示并且釋放信號(hào)量,led任務(wù)申請(qǐng)到信號(hào)量后開始閃爍,閃爍了10

            //次后停止,釋放信號(hào)量,lcd任務(wù)再申請(qǐng)信號(hào)量,繼續(xù)開始顯示,如此循環(huán)

            #include"includes.h"

            #include"pll.h"

            #include"string.h"

            #include"ser_12864.h"

            #defineTASK_STK_SIZE128//定義任務(wù)堆棧長(zhǎng)度

            #defineTASK_START_PRIO5//此版本的uC/OS-II最多支持256個(gè)用戶定義任務(wù)。優(yōu)先級(jí)號(hào)越低,任務(wù)的優(yōu)先級(jí)別就越高

            #defineTASK_1_PRIO10

            #defineTASK_2_PRIO12

            #defineTASK_3_PRIO8

            #defineTASK_4_PRIO16

            #defineTASK_5_PRIO18

            #defineTASK_6_PRIO20

            #defineTASK_7_PRIO22

            #defineTASK_8_PRIO24

            #defineTASK_9_PRIO26

            #defineTASK_A_PRIO28

            #defineTASK_B_PRIO30

            #defineTASK_C_PRIO32

            #defineTASK_D_PRIO34

            #defineTASK_E_PRIO36

            #defineTASK_F_PRIO38

            #defineMUTEX_PIP_18

            #defineMUTEX_PIP_29

            #defineEVENT_Q_1_SIZE10

            #defineEVENT_Q_2_SIZE20

            #defineMEM_BLKS_110

            #defineMEM_BLK_SIZE_18

            #defineMEM_BLKS_28

            #defineMEM_BLK_SIZE_212

            OS_STKlcd_task_stk[TASK_STK_SIZE];//定義任務(wù)堆棧

            OS_STKled_task_stk[TASK_STK_SIZE];

            OS_STKAppStartTaskStk[TASK_STK_SIZE];//創(chuàng)建任務(wù)堆棧OS_STK創(chuàng)建任務(wù)參數(shù)指針TASKDATA,調(diào)用函數(shù)創(chuàng)建任務(wù)

            OS_STKAppTask1Stk[TASK_STK_SIZE];

            OS_STKAppTask2Stk[TASK_STK_SIZE];

            OS_STKAppTask3Stk[TASK_STK_SIZE];

            OS_STKAppTask4Stk[TASK_STK_SIZE];

            OS_STKAppTask5Stk[TASK_STK_SIZE];

            OS_STKAppTask6Stk[TASK_STK_SIZE];

            OS_STKAppTask7Stk[TASK_STK_SIZE];

            OS_STKAppTask8Stk[TASK_STK_SIZE];

            OS_STKAppTask9Stk[TASK_STK_SIZE];

            OS_STKAppTaskAStk[TASK_STK_SIZE];

            OS_STKAppTaskBStk[TASK_STK_SIZE];

            OS_STKAppTaskCStk[TASK_STK_SIZE];

            OS_STKAppTaskDStk[TASK_STK_SIZE];

            OS_STKAppTaskEStk[TASK_STK_SIZE];

            OS_STKAppTaskFStk[TASK_STK_SIZE];

            INT16UAppTask1Ctr;

            INT16UAppTask2Ctr;

            INT16UAppTask3Ctr;

            INT16UAppTask4Ctr;

            INT16UAppTask5Ctr;

            INT16UAppTask6Ctr;

            INT16UAppTask7Ctr;

            INT16UAppTask8Ctr;

            INT16UAppTask9Ctr;

            INT16UAppTaskACtr;

            INT16UAppTaskBCtr;

            INT16UAppTaskCCtr;

            INT16UAppTaskDCtr;

            INT16UAppTaskECtr;

            INT16UAppTaskFCtr;

            INT8Usensor=0;//定義8路傳感器采集變量

            INT8Utest_value;//定義第八路傳感器故障時(shí)的變量

            //下面定義一些事件等,方便使用,不習(xí)慣使用下面的定義,自己定義也可以

            #ifOS_SEM_EN>0//如果信號(hào)量使能位允許

            OS_EVENT*EventSem1;//聲明信號(hào)量是事件控制塊ECB類型的指針存放創(chuàng)建信號(hào)量函數(shù)返回的創(chuàng)建的

            OS_EVENT*EventSem2;//信號(hào)量的指針

            #endif

            #ifOS_MBOX_EN>0

            OS_EVENT*EventMbox1;//聲明消息郵箱是事件控制塊ECB類型的指針

            OS_EVENT*EventMbox2;

            #endif

            #ifOS_Q_EN>0

            OS_EVENT*EventQ1;//聲明消息隊(duì)列

            OS_EVENT*EventQ2;

            void*EventQTbl1[EVENT_Q_1_SIZE];

            void*EventQTbl2[EVENT_Q_2_SIZE];

            //定義消息指針數(shù)組

            //創(chuàng)建消息隊(duì)列,首先需要定義一個(gè)指針數(shù)組(用于存放消息郵箱),然后把各個(gè)消息數(shù)據(jù)緩沖區(qū)的首地址存入這個(gè)數(shù)組中

            //最后再調(diào)用函數(shù)OSQCreate()來(lái)創(chuàng)建消息隊(duì)列

            #endif

            #ifOS_MUTEX_EN>0

            OS_EVENT*EventMutex1;//聲明互斥信號(hào)量

            OS_EVENT*EventMutex2;

            #endif

            #ifOS_FLAG_EN>0

            OS_FLAG_GRP*FlagGrp1;//聲明事件標(biāo)志組是標(biāo)志組OS_FLAG_GRP類型的指針

            OS_FLAG_GRP*FlagGrp2;//事件控制塊用來(lái)描述信號(hào)量,消息郵箱,消息隊(duì)列。標(biāo)志組用來(lái)描述事件標(biāo)志組

            #endif

            #ifOS_MEM_EN>0

            OS_MEM*MemPart1;//聲明內(nèi)存塊是內(nèi)存控制塊OS_MEM類型的指針

            OS_MEM*MemPart2;

            INT8UMemPart1Tbl[MEM_BLKS_1][MEM_BLK_SIZE_1];//內(nèi)存分區(qū)

            INT8UMemPart2Tbl[MEM_BLKS_2][MEM_BLK_SIZE_2];

            #endif

            //任務(wù)的函數(shù)聲明

            staticvoidAppStartTask(void*pdata);

            staticvoidAppTaskCreate(void);

            staticvoidAppEventCreate(void);

            staticvoidAppTask1(void*pdata);

            staticvoidAppTask2(void*pdata);

            staticvoidAppTask3(void*pdata);

            staticvoidAppTask4(void*pdata);

            staticvoidAppTask5(void*pdata);

            staticvoidAppTask6(void*pdata);

            staticvoidAppTask7(void*pdata);

            staticvoidAppTask8(void*pdata);

            staticvoidAppTask9(void*pdata);

            staticvoidAppTaskA(void*pdata);

            staticvoidAppTaskB(void*pdata);

            staticvoidAppTaskC(void*pdata);

            staticvoidAppTaskD(void*pdata);

            staticvoidAppTaskE(void*pdata);

            staticvoidAppTaskF(void*pdata);

            staticvoidAppTickInit(void);

            staticvoidlcd_task(void*pdata);

            staticvoidled_task(void*pdata);

            OS_EVENT*event_sem;//聲明信號(hào)量是事件控制塊ECB類型的指針存放創(chuàng)建信號(hào)量函數(shù)返回的創(chuàng)建的

            INT8Uerr;//定義一個(gè)錯(cuò)誤信息

            //12864要顯示的內(nèi)容

            staticunsignedchars1[]={"漢字顯示LCD"};

            staticunsignedchars2[]={"MC9S12開發(fā)系統(tǒng)"};

            staticunsignedchars3[]={"goodgoodstudy"};

            staticunsignedchars4[]={"2012-10-17-H23木"};

            //INT8Utimes_lcd=0;//記錄任務(wù)lcd的運(yùn)行次數(shù)

            //INT8Utimes_led=0;//任務(wù)led的運(yùn)行次數(shù)

            voidmain(void)

            {//因?yàn)闆]有外設(shè),所以不存在硬件初始化函數(shù)

            INT8Uerr;

            INT16UStartdata=0x1234;//???

            //開始執(zhí)行的位置另一種定義方式:TASKDATA.myPPAGE=0x1234,為結(jié)構(gòu)體變量的初始化

            DDRB=0xff;//B口led設(shè)為輸出

            PORTB=0xff;//led初始狀態(tài)為滅

            DDRA|=0x03;//液晶的兩條線

            init_lcd();

            pllbus_init16m();//時(shí)鐘初始化為16M

            //LcdInit();//LCD初始化

            OSInit();

            event_sem=OSSemCreate(1);

            //在主函數(shù)中創(chuàng)建信號(hào)量返回值為創(chuàng)建的信號(hào)量指針,參數(shù)是信號(hào)量的計(jì)數(shù)器的值

            //用該參數(shù)對(duì)信號(hào)量計(jì)數(shù)器OSEventCnt進(jìn)行初始化

            //1即代表只創(chuàng)建一個(gè)信號(hào)量,代表信號(hào)量用于對(duì)共享資源的訪問(wèn)(例如,把它當(dāng)做二值信號(hào)量使用),詳見P166

            //創(chuàng)建起始任務(wù),作用:初始化時(shí)鐘滴答,為操作系統(tǒng)提供時(shí)鐘。初始化統(tǒng)計(jì)任務(wù),創(chuàng)建應(yīng)用任務(wù),建立事件

            OSTaskCreateExt(AppStartTask,//創(chuàng)建開始任務(wù)處于休眠態(tài)的任務(wù)經(jīng)過(guò)這個(gè)函數(shù)處理后轉(zhuǎn)為就緒態(tài)

            (void*)&Startdata,//???

            (OS_STK*)&AppStartTaskStk[TASK_STK_SIZE-1],

            TASK_START_PRIO,//優(yōu)先級(jí)為5

            TASK_START_PRIO,

            (OS_STK*)&AppStartTaskStk[0],

            TASK_STK_SIZE,

            (void*)0,

            OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

            //該函數(shù)參數(shù)的具體介紹見P121

            OSTaskNameSet(TASK_START_PRIO,"StartTask",&err);//設(shè)置任務(wù)的名稱作用??

            OSTaskNameSet(OS_TASK_IDLE_PRIO,"uC/OS-IIIdle",&err);//空閑任務(wù)

            OSTaskNameSet(OS_TASK_STAT_PRIO,"uC/OS-IIStat",&err);//統(tǒng)計(jì)任務(wù)

            //#defineOS_TASK_STAT_EN1u//Enable(1)orDisable(0)thestatisticstask

            //因?yàn)樵诒鞠到y(tǒng)中os_cfg_r.h文件中把OS_TASK_STAT_EN設(shè)為了1(如上),所以系統(tǒng)的統(tǒng)計(jì)任務(wù)會(huì)建立

            //統(tǒng)計(jì)任務(wù)的建立是在OSInit()中被創(chuàng)建的,代碼如下:


            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉