鷹空獨舞
          邁著慵懶的步子,走在成長路上..... Dead
          posts - 4,comments - 1,trackbacks - 0

          OSTaskCreate()
          函數(shù)原型:INT8U OSTaskCreate(void(*task)(void *pd),void *pdata,OS_STK *ptos,INT8U prio)
          調用者:任務或者是初始化代碼。
          作用:建立一個新任務,任務的建立可以在多個任務環(huán)境啟動之前,也可以在正在運行的任務中建立,中斷處理程序中不能建立任務,一個任務必須為無限循環(huán)結構,且不能有返回點。無論用戶程序中是否產(chǎn)生中斷,在初始化任務堆棧時,堆棧的結構必須與處理器中斷后寄存器入棧的順序結構相同。

          該函數(shù)返回一個8位的整形數(shù),調用該函數(shù)需要四個參數(shù):
          a 第一個參數(shù):task是一個指向任務代碼的指針,也就是用戶代碼的首地址,平常使用中我們把自己創(chuàng)建的任務的名字作為這個參數(shù)即可。
          b 第二個參數(shù):pdata指向一個數(shù)據(jù)結構,該結構用來在建立任務時向任務傳遞參數(shù)。
          c 第三個參數(shù):ptos是指向任務堆棧棧頂?shù)闹羔槪话惆褎?chuàng)建的任務的堆棧數(shù)組首地址賦給它。
          任務堆棧用來保存局部變量,函數(shù)參數(shù),返回地址以及任務被中斷時處理器寄存器的內容,任務堆棧的大小決定于任務的需要以及預計的中斷嵌套層數(shù)。計算堆棧的大小需要知道任務的局部變量所占的空間,可能產(chǎn)生嵌套調用的函數(shù),及中斷嵌套所需的空間,如果初始化常量OS_STK_GROWTH設為1,堆棧被設為從內存高地址向低地址增長,此時ptos應該指向任務堆棧空間的最高地址,反之,如果OS_STK_GROWTH設為0,堆棧將從內存的低地址向高地址增長。
          d 第四個參數(shù):prio是任務的優(yōu)先級。每個任務必須有一個唯一的優(yōu)先級作為標識,數(shù)字越小,優(yōu)先級越高。

          返回值:
          OSTaskCreate()的返回值為下述之一:
          # OS_NO_ERR: 函數(shù)調用成功。
          # OS_PRIO_EXIST:具有該優(yōu)先級的任務已經(jīng)存在。
          # OS_PRIO_INVALID: 參數(shù)指定的優(yōu)先級大于OS_LOWEST_PRIO
          # OS_NO_MORE_TCB: 系統(tǒng)中沒有OS_TCB可以分配給任務了。

          注意:
          1 任何堆棧必須聲明為OS_STK類型。
          2 在任務中必須調用uCOS提供的下述過程之一:延時等待,任務掛起,等待事件發(fā)生(等待信號量,消息郵箱,消息隊列),以便其他任務能得到cpu。
          3 程序中不能使用優(yōu)先級0,1,2,3,以及OS_LOWEST_PRIO-3,OS_LOWEST_PRIO-2,OS_LOWEST_PRIO-1,

          OS_LOWEST_PRIO,這些優(yōu)先級系統(tǒng)保留,其余的56個優(yōu)先級提供給應用程序。

          范例:
          本例中,傳遞給任務Task1()的參數(shù)pdata不使用,所以指針pdata被設為NULLL,注意到程序中設定堆棧向低地址增長,傳遞的棧頂指針為高地址&Task1[1023],如果在你的程序中設定堆棧向高地址增長,則傳遞的棧頂指針應該為&Task1Stk[0]。
          OS_STK Task1Stk[1024];
          void main(void)
          {
          NT8U err;
             ...
          OSInit();//初始化uCOS-II
          ....
          OSTaskCreate(Task1,(void *)0,&Task1Stk[1023],25);
          ...
          OSStart();//啟動多任務環(huán)境
          }

          void Task1(void *pdata)
          {
          pdata=pdata;
          for(;;)
          {
          ......   //任務代碼
          }

          }

          posted on 2012-05-31 16:23 鷹空獨舞 閱讀(503) 評論(0)  編輯  收藏 所屬分類: STM32

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 壤塘县| 交口县| 青州市| 桓仁| 建水县| 翁牛特旗| 株洲县| 罗源县| 常德市| 都安| 瓦房店市| 大悟县| 乐昌市| 平武县| 防城港市| 长顺县| 东方市| 茶陵县| 安丘市| 张家港市| 辰溪县| 闽清县| 五台县| 汉阴县| 武定县| 镇平县| 阳城县| 环江| 明溪县| 宾川县| 广灵县| 桃源县| 图片| 宁阳县| 疏勒县| 铅山县| 乐山市| 巴南区| 千阳县| 麟游县| 同仁县|