uCOSII常用函數(shù)參考手冊_第1頁
uCOSII常用函數(shù)參考手冊_第2頁
uCOSII常用函數(shù)參考手冊_第3頁
uCOSII常用函數(shù)參考手冊_第4頁
uCOSII常用函數(shù)參考手冊_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Q力天ucos-n常用函婁技術(shù)文1.01.0技術(shù)文件名稱技術(shù)文件編號版本擬制何呈審核張勇批準(zhǔn)修改記錄文件編號版本號擬制人/修改人擬制/修改日期更改理由主要更】(寫要點(diǎn)1.0何呈2010-01-25Q力天ucos-n常用函婁一任務(wù)管理OSTaskCreate()建立個新任務(wù)。任務(wù)的建立可以在多任務(wù)壞境啟動之前,也可I行的任務(wù)中建立。中斷處理程序中不能建立任務(wù)。個任務(wù)可以為無I構(gòu)。函數(shù)原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pda*ptos,INT8Uprio);參數(shù)說明:task是指向任務(wù)代碼首地址的指針。pdata指向一個數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)用

2、來在建立任務(wù)時向任務(wù)傳遞:ptosisapointertothetaskstopofstack.IftheconfiguratiOSSTKGROWTHissetto1,thestackisassumedtogrowdownwarhighmemorytolowmemory),pstkwillthuspointtothehighest(vallocationofthestack.IfOSSTKGROWTHissetto0,pstkwillpointtmemorylocationofthestackandthestackwillgrowwithincreasilocations.prioisthet

3、askspriority.AuniquepriorityMUSTbeassignedtoeethelowerthenumber,thehigherthepriority.返回值:OSTaskCreate()的返回值為下述之一:OS_NO_ERR:函數(shù)調(diào)用成功。OS_PRIO_EXIST:具有該優(yōu)先級的任務(wù)己經(jīng)存在。OS_PRIONVALID:參數(shù)指定的優(yōu)先級大于OS_LOWEST_P1OS_NO_MORE_TCB:系統(tǒng)中沒有OS_TCB可以分配給任務(wù)了2OSTaskSuspendO無條件掛起一個任務(wù)。調(diào)用此函數(shù)的任務(wù)也可以傳遞參數(shù)OSPI又如,任務(wù)被掛起時正在等待信7暈,半任務(wù)從信號暈的等待對

4、列中;能立即運(yùn)行,而必須等到被喚醒后。函數(shù)原型:INT8UOSTaskSuspend(INT8Uprio);參數(shù)說明:prio為指定要獲取掛起的任務(wù)優(yōu)先級,也可EOS_PRIO_SELF,掛起任務(wù)本身。此時,下一個優(yōu)先級最高的就緒任返回值:OSTaskSuspcnd()的返回值為卜述Z:*OSNOERR:函數(shù)調(diào)用成功。*OS_TASK_SUSPEND_IDLE:試圖掛起pC/OS-II中的空閑任務(wù)】此為非法操作。OS_PRIONVALID:參數(shù)指定的優(yōu)先級人于OS_LOWEST_PE設(shè)定OS_PR1O_SELF的值。OS_TASK_SUSPEND_PRIO:要掛起的任務(wù)不存亦。3OSTaskR

5、esume()喚醉一個用OSTaskSuspend()函數(shù)掛起的任務(wù)。OSTaskResume(能“解掛”掛起任務(wù)的函數(shù)。函數(shù)原型:INT8UOSTaskRcsumc(INT8Uprio);參數(shù)說明:prio指定要喚醒任務(wù)的優(yōu)先級。返回值:OSTaskResume()的返冋值為下述之:OS_NO_ERR:函數(shù)調(diào)用成功。OS_TASK_RESUME_PRO:要喚醒的任務(wù)不存在。OS_TASKNOTSUSPENDED:要喚醒的任務(wù)不在掛起狀態(tài)。OS_PR1O_INVALID:參數(shù)指定的優(yōu)先級大于或等于OS_LOWI二信號量力天uCOSII常用函婁力天uCOSII常用函婁Q力天ucos-n常用函婁參

6、數(shù)說明:value參數(shù)是所建立的信及量的初始值,可以取0到的任何值。返回值:OSSemCreateO函數(shù)返冋指向分配給所建立的信號雖的控制塊的沒有可用的控制塊,OSSemCreate()函數(shù)返回空指針。OSSemPend()該函數(shù)用丁任務(wù)試圖取得設(shè)備的使用權(quán)、任務(wù)需要和其他任務(wù)0任務(wù)需要等待特定事件的發(fā)生的場合。如果任務(wù)調(diào)用OSScmPcnd()|號量的值大零,OSScmPcml()函數(shù)遞減該值并返回該值。如果調(diào)丿值等于零,OSSemPend()函數(shù)將任務(wù)加入該信號量的等待隊列。OSSci數(shù)掛起半前任務(wù)直到其他的任務(wù)或中斷設(shè)置信號暈或超出等待的預(yù)嫌在預(yù)期的時鐘節(jié)扌fl內(nèi)信號量被設(shè),pC/OS-

7、II默認(rèn)讓最高優(yōu)先級的任1星并冋到就緒狀態(tài)。個被OSTaskSuspend()函數(shù)掛起的任務(wù)也可I量,但這個任務(wù)將直保持掛起狀態(tài)直到通過調(diào)用OSTaskResume()I任務(wù)的運(yùn)行。函數(shù)原型:voidOSSemPend(OSEVNNT和event,INTI6Utin*cit);參數(shù)說明:pcvcnt是指向信號量的指針。該指針的值在建立該4以得到。(參考OSSemCreate()函數(shù))。timeout允許一個任務(wù)在經(jīng)過了指定數(shù)R的時鐘節(jié)拍后還沒有得1號量時恢復(fù)就緒狀態(tài)。如果該値為零表示任務(wù)將持續(xù)地等待信號暈,:時間為65535個時鐘節(jié)拍。這個時間長度并不是非常嚴(yán)格的,可能存;節(jié)扌n的誤差。err

8、是指向包含錯誤碼的變量的指針,返回的錯誤碼可能為下述,*OSNOERR:信號量不為零。該函數(shù)用于設(shè)置指定的信號暈。如果指定的信號量是零妙OSSemPost()函數(shù)遞增該信號暈的值并返回。如果有任何任務(wù)在等待則最高優(yōu)先級的任務(wù)將得到信號量并進(jìn)入就緒狀態(tài)。任務(wù)調(diào)度函數(shù)將.度,決定J前運(yùn)行的任務(wù)是否仍然為最高優(yōu)先級的就緒任務(wù)。函數(shù)原型:INT8UOSSemPost(OSEVENT*pevent);參數(shù)說明:pevent是指向信號量的指針。該指針的值在建立該彳以得到。(參考0SScmCrcatc()函數(shù))。返回值:OSScmPost()函數(shù)的返回值為下述Z:OS_NO_ERR:信號量被成功地設(shè)置*OS

9、_SEM_OVF:信號量的值溢出OS_ERR_EVENT_TYPE:pevent不是指向信號量的指針三時間OSTimeDlyO該函數(shù)用于將一個任務(wù)延時若T個時鐘節(jié)拍。如果延時時間大于立即進(jìn)行任務(wù)調(diào)度。延時時間的長度可從0到65535個時鐘節(jié)拍。延I示不進(jìn)行延時,函數(shù)將立即返回調(diào)用者。延時的具體時間依賴丁系統(tǒng),少個時鐘節(jié)拍(由文件OS_CFG.H中的OS_TICKS_PER_SEC宏來設(shè)voidOSTimeDly(INT16Uticks);參數(shù)說明:ticks為要延時的時鐘節(jié)拍數(shù)。返回值:無OSTimeDlyHMSMO該函數(shù)用于將個任務(wù)延時若干時間。延時的單位是小時、分、調(diào)用OSTimeDlyH

10、MSMO后,如果延時時間不為0,系統(tǒng)將立即進(jìn)彳】函數(shù)原型:INT8UOSTimeDlyHMSM(INT8Uhours,INT8Uminu力天uCOSII常用函婁力天uCOSII常用函婁Q力天uCOSII常用函婁V需要說明的是,操作系統(tǒng)在處理延時操作時都是以時鐘節(jié)拍為單的延時時間是時鐘節(jié)拍的整數(shù)倍。如果系統(tǒng)時鐘節(jié)拍的間隔是10ms:時為5ms的話,則不會產(chǎn)牛延時操作;而如果設(shè)定延時為15ms,則;是兩個時鐘節(jié)扌g(shù)也就是20mso返回值:OSTimeDlyIIMSM()的返回值為下述之一:*OS_NO_ERR:函數(shù)調(diào)用成功。*OSTIMEVAL1DMINUTES:參數(shù)錯誤,分鐘數(shù)大丁59。STIM

11、ENVAL1DSECONDS:參數(shù)錯誤,秒數(shù)大59。OS_TIME_INVALID_MILLI:參數(shù)錯誤,奄秒數(shù)人于999。OS_TIME_ZERO_DLY:四個參數(shù)全為0。四內(nèi)存管理1OSMemCreate()該函數(shù)建立并初始化個用于動態(tài)內(nèi)存分配的區(qū)域,該內(nèi)存區(qū)域,忖的、大小確定的內(nèi)存塊。應(yīng)用可以動態(tài)中請這些內(nèi)存塊并在用完后:這個內(nèi)存區(qū)域。該函數(shù)的返回值就是指向這個內(nèi)存I乂域控制塊的指彳OSMcmGct(),OSMcmPutO,OSMcmQucry()等相關(guān)調(diào)用的參數(shù)。OSMEM*OSMcmCrcatc(void*addr,INT32Unbllblksize,INT8U*err);參數(shù)說明:

12、addr建立的內(nèi)存區(qū)域的起始地址??梢允褂渺o態(tài)數(shù)纟初始化時使用malloc()函數(shù)來分配這個區(qū)域的空間。nblks內(nèi)存塊的數(shù)|二|。每個內(nèi)存區(qū)域最少需要定義兩個內(nèi)存塊blksize每個內(nèi)存塊的大小,最小應(yīng)該能夠容納-個指針變量。err是指向包含錯誤碼的變量的指針。Err可能是如下兒種情況:*OS_NO一ERR:成功建立內(nèi)存區(qū)域。OSMemCreate()函數(shù)返回指向所創(chuàng)建的內(nèi)存區(qū)域控制塊的指針失敗,函數(shù)返回空指針。2OSMemGet()該函數(shù)用于從內(nèi)存區(qū)域分配-個內(nèi)存塊。用戶程序必須知道所建的大小,并必須在使用完內(nèi)存塊后釋放它??梢远啻握{(diào)用OSMemG它的返回值就是指向所分配內(nèi)存塊的指針,并作

13、為OSMemPut()函扌函數(shù)原型:void*OSMcmGct(OS_MEM*pmcm,INT8U*crr);參數(shù)說明:pmcm是指向內(nèi)存區(qū)域控制塊的指針,可以從OSh力天uCOSII常用函婁力天uCOSII常用函婁Q力天uCOSII常用函婁V力天uCOSII常用函婁力天uCOSII常用函婁Q力天uCOSII常用函婁V函數(shù)的返回值中得到。err是指向包含錯誤碼的變暈的指針。Err對能是如下情況:OS_NO_ERR:成功得到一個內(nèi)存塊。OS_MEM_NO_FREE_BLKS:內(nèi)存區(qū)域中已經(jīng)沒有足夠的內(nèi)彳返回值:OSMemGetO函數(shù)返冋指向所分配內(nèi)存塊的指針。如果沒有可:塊,OSMemGet()

14、函數(shù)返回空指針。OSMcmPut()該函數(shù)用丁釋放一個內(nèi)存塊,內(nèi)存塊必須釋放回它原先所在的內(nèi)則會造成系統(tǒng)錯謀。,3V函數(shù)原型:INT8UOSMemPut(OS_MEM*pmem,void*pblk);參數(shù)說明:pmem是指向內(nèi)存區(qū)域控制塊的指針,可以從OSN函數(shù)的返冋值中得到。pblk是指向?qū)⒈会尫诺膬?nèi)存塊的指針。返回值:OSMemPut()函數(shù)的返回值為下述之一:*OS_NO_ERR:成功釋放內(nèi)存塊Q力天uCOSII常用函婁Q力天uCOSII常用函婁Q力天ucos-n常用函婁參數(shù)說明:pmem是指向內(nèi)存區(qū)域控制塊的指針,可以從OSN函數(shù)的返回值中得到。pdata是一個指向OS_MEM_DAT

15、A數(shù)據(jù)結(jié)構(gòu)的指針,該數(shù)據(jù)結(jié);下的域:voidOSAddr;/*指向內(nèi)存區(qū)域起始地址的指針*/voidOSFreeList;/*指向空閑內(nèi)存塊列表起始地址的指針I(yè)NT32UOSBlkSizc;/*每個內(nèi)存塊的大小*/INT32UOSNBlks;/*該內(nèi)存區(qū)域中的內(nèi)存塊總數(shù)*/INT32UOSNFrcc;/*空閑的內(nèi)存塊數(shù)冃*/INT32UOSNUsed;/*已使用的內(nèi)存塊數(shù)冃*/五消息隊列OSQCreate()I、卞,該函數(shù)用于建立個消息隊列。任務(wù)或中斷可以通過消息隊列向任務(wù)發(fā)送消息。消息的含義是和具體的應(yīng)用密切相關(guān)的。函數(shù)原型:OSEVENT*OSQCreate(void*start,INT8

16、Usize);參數(shù)說明:sunt是消息內(nèi)存區(qū)的首地址,消息內(nèi)存區(qū)是一個指令size是消息內(nèi)存區(qū)的大小。返回值:;WOSQCrcatc()函數(shù)返回一個指向消息隊歹U控制塊的指針。如果沒:制塊,OSQCrcatc()函數(shù)返回空指針。OSQPend()該函數(shù)用于任務(wù)等待消息。消息通過中斷或任務(wù)發(fā)送給需要的任個指針變量,在不同的應(yīng)用中消息的具體含義不同。如果調(diào)用OS-數(shù)時隊列中已經(jīng)存在消息,那么該消息被返回給OSQPend()函數(shù)的-消息同時從隊列中清除。如果調(diào)用OSQPend()函數(shù)時隊列中衣參數(shù)說明:pevent是指向消息隊列的指針,該指針的值在建立i以得到。(參考OSQCrcatc()函數(shù))。t

17、imeout允許個任務(wù)以指定數(shù)Fl的時鐘節(jié)扌巾等待消息。超時后1得到消息則恢復(fù)成就緒狀態(tài)。如果該值設(shè)置成零則表示任務(wù)將持續(xù)地最大的等待時間為65535個時鐘節(jié)拍。這個時間長度并不是非常嚴(yán)格I在一個時鐘節(jié)拍的誤差。err是指向包含錯誤碼的變量的指針。OSQPcnd()函數(shù)返回的錯-下述幾種:OS_NO_ERR:消息被正確地接受。OS_TIMEOUT:消息沒有在指定的時鐘周期數(shù)內(nèi)接收到消息cOS_ERR_PEND_ISR:從中斷調(diào)用該函數(shù)。雖然規(guī)定了不允調(diào)用該函數(shù),但gC/OS-II仍然包含了檢測這種情況的功能。OS_ERREVENTTYPE:pevent不是指向消息隊列的指針。返回值:OSQPe

18、nd()函數(shù)返回取得的消息并將*err置為OS_NO_ERR。-指定數(shù)冃的時鐘節(jié)拍內(nèi)接受到消息,OSQPendQ函數(shù)返回空指針并將為OSTIMEOUT。OSQPostFront()該函數(shù)用于向消息隊列發(fā)送消息。OSQPostFnmt()函數(shù)和OSQ非常相似,不同之處在于OSQPostFnmt()函數(shù)將發(fā)送的消息插到消前端。也就是說,OSQPostFront()函數(shù)使得消息隊列按照后入先出方式工作,而不是先入先出(FIFO)。消息是一個指針長度的變量,應(yīng)用中消息的含義也可能不同。如果隊列中已經(jīng)存滿消息,則此調(diào)用:碼。OSQPost()函數(shù)也是如此。在調(diào)用此函數(shù)時如果有任何任務(wù)在等;消息,則最高優(yōu)

19、先級的任務(wù)將得到這個消息。如果等待消息的任務(wù)優(yōu):力天uCOSII常用函婁力天uCOSII常用函婁Q力天ucos-n常用函婁返回值:OSQPostFront()函數(shù)的返回值為下述之一:OS_NO_ERR:消息成功地放到消息隊列中。OS_Q_FULL:消息隊列已滿。OS_ERR_EVENT_TYPE:pevent不是指向消息隊列的指針。OSQPostO該函數(shù)用J:向消息隊列發(fā)送消息。消息是一個指針長度的變量,;用中消息的含義也可能不同。如果隊列中己經(jīng)存滿消息,則此調(diào)用返如果有任何任務(wù)在等待隊列中的消息,則最高優(yōu)先級的任務(wù)將得到這果等待消息的任務(wù)優(yōu)先級比發(fā)送消息的任務(wù)優(yōu)先級高,那么高優(yōu)先級I得到消息后立即搶山半前任務(wù)執(zhí)行,也就是說,將發(fā)生一次任務(wù)切換先入先出(FIFO)方式進(jìn)入隊列的,即先進(jìn)入隊列的消息先被傳遞經(jīng)函數(shù)原型:INT8UOSQPost(OS_EVENT*pevent,void*msg);參數(shù)說明:pevent是指向即將接受消息的消息隊列的指針。該?建立隊列時可以得到。(參考OSQCeate()函數(shù))。msg是即將發(fā)送給隊列的消息。不允許傳遞一個空指針

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論