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

下載本文檔

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

文檔簡(jiǎn)介

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

2、來(lái)在建立任務(wù)時(shí)向任務(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)先級(jí)的任務(wù)己經(jīng)存在。OS_PRIONVALID:參數(shù)指定的優(yōu)先級(jí)大于OS_LOWEST_P1OS_NO_MORE_TCB:系統(tǒng)中沒(méi)有OS_TCB可以分配給任務(wù)了2OSTaskSuspendO無(wú)條件掛起一個(gè)任務(wù)。調(diào)用此函數(shù)的任務(wù)也可以傳遞參數(shù)OSPI又如,任務(wù)被掛起時(shí)正在等待信7暈,半任務(wù)從信號(hào)暈的等待對(duì)

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

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

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

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

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

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

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

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

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

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

14、函數(shù)返回空指針。OSMcmPut()該函數(shù)用丁釋放一個(gè)內(nèi)存塊,內(nèi)存塊必須釋放回它原先所在的內(nèi)則會(huì)造成系統(tǒng)錯(cuò)謀。,3V函數(shù)原型:INT8UOSMemPut(OS_MEM*pmem,void*pblk);參數(shù)說(shuō)明: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ù)說(shuō)明:pmem是指向內(nèi)存區(qū)域控制塊的指針,可以從OSN函數(shù)的返回值中得到。pdata是一個(gè)指向OS_MEM_DAT

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論