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

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ucos-ii學(xué)習(xí)筆記——s12移植成功main函數(shù)

      ucos-ii學(xué)習(xí)筆記——s12移植成功main函數(shù)

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

      Author:zhangbin

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

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

      forucos-iiMC9S12XS128

      redesignedbyzhangbin

      2012-10-9

      versions:V-0.1

      AllRightsReserved

      #include"includes.h"

      #include"pll.h"

      #include"string.h"

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

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

      #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_STKled_task_1_stk[TASK_STK_SIZE];//定義任務(wù)堆棧

      OS_STKled_task_2_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;//定義第八路傳感器故障時的變量

      #ifOS_SEM_EN>0

      OS_EVENT*EventSem1;

      OS_EVENT*EventSem2;

      #endif

      #ifOS_MBOX_EN>0

      OS_EVENT*EventMbox1;

      OS_EVENT*EventMbox2;

      #endif

      #ifOS_Q_EN>0

      OS_EVENT*EventQ1;

      OS_EVENT*EventQ2;

      void*EventQTbl1[EVENT_Q_1_SIZE];

      void*EventQTbl2[EVENT_Q_2_SIZE];

      #endif

      #ifOS_MUTEX_EN>0

      OS_EVENT*EventMutex1;

      OS_EVENT*EventMutex2;

      #endif

      #ifOS_FLAG_EN>0

      OS_FLAG_GRP*FlagGrp1;

      OS_FLAG_GRP*FlagGrp2;

      #endif

      #ifOS_MEM_EN>0

      OS_MEM*MemPart1;

      OS_MEM*MemPart2;

      INT8UMemPart1Tbl[MEM_BLKS_1][MEM_BLK_SIZE_1];

      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);

      staticvoidled_task_1(void*pdata);

      staticvoidled_task_2(void*pdata);

      //led的初始化函數(shù)

      voidled_init()

      {

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

      PORTB=0xff;//設(shè)為高電平,滅燈

      }

      voidmain(void)

      {//因為沒有外設(shè),所以不存在硬件初始化函數(shù)

      INT8Uerr;

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

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

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

      led_init();//led初始化

      OSInit();

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

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

      (void*)&Startdata,

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

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

      TASK_START_PRIO,

      (OS_STK*)&AppStartTaskStk[0],

      TASK_STK_SIZE,

      (void*)0,

      OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

      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)計任務(wù)

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

      //因為在本系統(tǒng)中os_cfg_r.h文件中把OS_TASK_STAT_EN設(shè)為了1(如上),所以系統(tǒng)的統(tǒng)計任務(wù)會建立

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

      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(led_task_1,(void*)0,&led_task_1_stk[TASK_STK_SIZE-1],6);//創(chuàng)建任務(wù)led_task_1,優(yōu)先級為6

      OSTaskCreate(led_task_2,(void*)0,&led_task_2_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

      }

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

      {

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

      for(;;)

      {

      PORTB=0xf0;

      OSTimeDlyHMSM(0,0,0,500);//等待1s,交出cpu,任務(wù)調(diào)度一次

      }

      }

      staticvoidled_task_2(void*pdata)

      {

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

      for(;;)

      {

      PORTB=0x0f;

      OSTimeDlyHMSM(0,0,1,0);//等待2s交出cpu

      }

      }

      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;

      pdata=pdata;

      while(TRUE){

      AppTaskACtr++;

      #ifOS_FLAG_EN>0

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

      #endif

      OSTimeDly(100);

      }

      }

      staticvoidAppTaskB(void*pdata)

      {

      INT8Uerr;

      pdata=pdata;

      while(TRUE){

      AppTaskBCtr++;

      #ifOS_FLAG_EN>0

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

      #endif

      OSTimeDly(100);

      }

      }

      staticvoidAppTaskC(void*pdata)

      {

      INT8Uerr;

      pdata=pdata;

      while(TRUE){

      AppTaskCCtr++;

      #ifOS_MUTEX_EN>0

      OSMutexPend(EventMutex1,0,&err);

      OSTimeDly(100);

      OSMutexPost(EventMutex1);

      #endif

      OSTimeDly(1);

      }

      }

      staticvoidAppTaskD(void*pdata)

      {

      INT8Uerr;

      pdata=pdata;

      while(TRUE){

      AppTaskDCtr++;

      #ifOS_MUTEX_EN>0

      OSMutexPend(EventMutex1,0,&err);

      OSTimeDly(100);

      OSMutexPost(EventMutex1);

      #endif

      OSTimeDly(1);

      }

      }

      staticvoidAppTaskE(void*pdata)

      {

      INT8Uerr;

      pdata=pdata;

      while(TRUE){

      AppTaskECtr++;

      #ifOS_MBOX_EN>0

      OSMboxPost(EventMbox1,(void*)"Msg#1");

      OSTimeDly(100);

      OSMboxPost(EventMbox1,(void*)"Msg#2");

      OSTimeDly(100);

      OSMboxPost(EventMbox1,(void*)"Msg#3");

      OSTimeDly(100);

      #endif

      OSTimeDly(1);

      }

      }

      staticvoidAppTaskF(void*pdata)

      {

      INT8Uerr;

      char*pmsg;

      chars[30];

      pdata=pdata;

      while(TRUE){

      AppTaskFCtr++;

      #ifOS_MBOX_EN>0

      pmsg=(char*)OSMboxPend(EventMbox1,0,&err);

      strcpy(s,pmsg);

      #endif

      OSTimeDly(1);

      }

      }

      staticvoidAppTickInit(void)

      {

      TSCR1=0x80;

      #ifOS_TICK_OC==0

      TIOS|=0x01;

      TC0=TCNT+OS_TICK_OC_CNTS;

      TCTL2|=0x01;

      TIE|=0x01;

      #endif

      #ifOS_TICK_OC==1

      TIOS|=0x02;

      TC1=TCNT+OS_TICK_OC_CNTS;

      TCTL2|=0x04;

      TIE|=0x02;

      #endif

      #ifOS_TICK_OC==2

      TIOS|=0x04;

      TC2=TCNT+OS_TICK_OC_CNTS;

      TCTL2|=0x10;

      TIE|=0x04;

      #endif

      #ifOS_TICK_OC==3

      TIOS|=0x08;

      TC3=TCNT+OS_TICK_OC_CNTS;

      TCTL2|=0x40;

      TIE|=0x08;

      #endif

      #ifOS_TICK_OC==4

      TIOS|=0x10;

      TC4=TCNT+OS_TICK_OC_CNTS;

      TCTL1|=0x01;

      TIE|=0x10;

      #endif

      #ifOS_TICK_OC==5

      TIOS|=0x20;

      TC5=TCNT+OS_TICK_OC_CNTS;

      TCTL1|=0x04;

      TIE|=0x20;

      #endif

      #ifOS_TICK_OC==6

      TIOS|=0x40;

      TC6=TCNT+OS_TICK_OC_CNTS;

      TCTL1|=0x10;

      TIE|=0x40;

      #endif

      #ifOS_TICK_OC==7

      TIOS|=0x80;

      TC7=TCNT+OS_TICK_OC_CNTS;

      TCTL1|=0x40;

      TIE|=0x80;

      #endif

      }



      評論


      相關(guān)推薦

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

      關(guān)閉