Void OSInit(void);
所屬文件 OS_CORE.C 調用者啟動代碼 開關量無
OSinit()初始化μC/OS-Ⅱ,對這個函數的調用必須在調用OSStart()函數之前,而OSStart()函數真正開始運行多任務。
Void OSIntEnter(void);
所屬文件 OS_CORE.C 調用者中斷 開關量無
OSIntEnter()通知μC/OS-Ⅱ一個中斷處理函數正在執(zhí)行,這有助于μC/OS-Ⅱ掌握中斷嵌套的情況。OSIntEnter()函數通常和OSIntExit()函數聯合使用。
注意/警告:在任務級不能調用該函數。如果系統(tǒng)使用的處理器能夠執(zhí)行自動的獨立執(zhí)行讀取-修改-寫入的操作,那么就可以直接遞增中斷嵌套層數(OSIntNesting),這樣可以避免調用函數所帶來的額外的開銷。
Void OSIntExit(void);
所屬文件 OS_CORE.C 調用者中斷 開關量無
OSIntExit()通知μC/OS-Ⅱ一個中斷服務已執(zhí)行完畢,這有助于μC/OS-Ⅱ掌握中斷嵌套的情況。通常OSIntExit()和OSIntEnter()聯合使用。當最后一層嵌套的中斷執(zhí)行完畢后,如果有更高優(yōu)先級的任務準備就緒,μC/OS-Ⅱ會調用任務調度函數,在這種情況下,中斷返回到更高優(yōu)先級的任務而不是被中斷了的任務。
注意/警告:在任務級不能調用該函數。并且即使沒有調用OSIntEnter()而是使用直接遞增OSIntNesting的方法,也必須調用OSIntExit()函數。
Void OSSchedLock(void);
所屬文件 OS_CORE.C 調用者任務或中斷 開關量
N/A
OSSchedLock()函數停止任務調度,只有使用配對的函數OSSchedUnlock()才能重新開始內核的任務調度。調用OSSchedLock()函數的任務獨占CPU,不管有沒有其他高優(yōu)先級的就緒任務。在這種情況下,中斷仍然可以被接受和執(zhí)行(中斷必須允許)。OSSchedLock()函數和OSSchedUnlock()函數必須配對使用。μC/OS-Ⅱ可以支持多達254層的OSSchedLock()函數嵌套,必須調用同樣次數的OSSchedUnlock()函數才能恢復任務調度。
注意/警告:任務調用了OSSchedLock()函數后,決不能再調用可能導致當前任務掛起的系統(tǒng)函數:OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因為任務調度已經被禁止,其他任務不能運行,這會導致系統(tǒng)死鎖。
Void OSSchedUnlock(void);
所屬文件 OS_CORE.C 調用者任務或中斷 開關量
N/A
在調用了OSSchedLock()函數后,OSSchedUnlock()函數恢復任務調度。
注意/警告:任務調用了OSSchedLock()函數后,決不能再調用可能導致當前任務掛起的系統(tǒng)函數:OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因為任務調度已經被禁止,其他任務不能運行,這會導致系統(tǒng)死鎖。
void OSStart(void);
所屬文件 OS_CORE.C 調用者初始代碼 開關量無
OSStart( )啟動μC/OS-II的多任務環(huán)境。
注意/警告:在調用OSStart(
)之前必須先調用OSInit ( )。在用戶程序中OSStart(
)只能被調用一次。第二次調用OSStart( )將不進行任何操作。
void OSStatInit (void);
所屬文件 OS_CORE.C 調用者初始代碼 開關量
OS_TASK_STAT_EN &&OS_TASK_CREATE_EXT_EN
OSStatInit()獲取當系統(tǒng)中沒有其他任務運行時,32位計數器所能達到的最大值。OSStatInit()的調用時機是當多任務環(huán)境已經啟動,且系統(tǒng)中只有一個任務在運行。也就是說,該函數只能在第一個被建立并運行的任務中調用。
INT8U OSTaskChangePrio (INT8U oldprio, INT8U newprio);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_CHANGE_PRIO_EN
OSTaskChangePrio()改變一個任務的優(yōu)先級。
參數
oldprio是任務原先的優(yōu)先級。
newprio 是任務的新優(yōu)先級。
返回值
OSTaskChangePrio()的返回值為下述之一:
OS_NO_ERR:任務優(yōu)先級成功改變。
OS_PRO_INVALID:參數中的任務原先優(yōu)先級或新優(yōu)先級大于或等于OS_LOWEST_PRIO。
OS_PRIO_EXIST:參數中的新優(yōu)先級已經存在。
OS_PRIO_ERR:參數中的任務原先優(yōu)先級不存在。
注意/警告:參數中的新優(yōu)先級必須是沒有使用過的,否則會返回錯誤碼。在OSTaskChangePrio()中還會先判斷要改變優(yōu)先級的任務是否存在
INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);
所屬文件 OS_TASK.C 調用者任務或初始化代碼 開關量無
OSTaskCreate()建立一個新任務。任務的建立可以在多任務環(huán)境啟動之前,也可以在正在運行的任務中建立。中斷處理程序中不能建立任務。一個任務必須為無限循環(huán)結構,且不能有返回點。
OSTaskCreate()是為與先前的μC/OS版本保持兼容,新增的特性在OSTaskCreateExt()函數中。
無論用戶程序中是否產生中斷,在初始化任務堆棧時,堆棧的結構必須與CPU中斷后寄存器入棧的順序結構相同。詳細說明請參考所用處理器的手冊。
參數
task是指向任務代碼的指針。
Pdata指向一個數據結構,該結構用來在建立任務時向任務傳遞參數。
ptos為指向任務堆棧棧頂的指針。任務堆棧用來保存局部變量,函數參數,返回地址以及任務被中斷時的CPU寄存器內容。任務堆棧的大小決定于任務的需要及預計的中斷嵌套層數。計算堆棧的大小,需要知道任務的局部變量所占的空間,可能產生嵌套調用的函數,及中斷嵌套所需空間。如果初始化常量OS_STK_GROWTH設為1,堆棧被設為從內存高地址向低地址增長,此時ptos應該指向任務堆??臻g的最高地址。反之,如果OS_STK_GROWTH設為0,堆棧將從內存的低地址向高地址增長。
prio為任務的優(yōu)先級。每個任務必須有一個唯一的優(yōu)先級作為標識。數字越小,優(yōu)先級越高。
返回值
OSTaskCreate()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_PRIO_EXIST:具有該優(yōu)先級的任務已經存在。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO。
OS_NO_MORE_TCB:系統(tǒng)中沒有OS_TCB可以分配給任務了。
注意/警告:任務堆棧必須聲明為OS_STK類型。
在任務中必須調用μC/OS提供的下述過程之一:延時等待、任務掛起、等待事件發(fā)生(等待信號量,消息郵箱、消息隊列),以使其他任務得到CPU。
用戶程序中不能使用優(yōu)先級0,1,2,3,以及OS_LOWEST_PRIO-3,
OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO。這些優(yōu)先級μC/OS系統(tǒng)保留,其余的56個優(yōu)先級提供給應用程序。
INT8U OSTaskCreateExt(void (*task)(void *pd), void *pdata, OS_STK *ptos,INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt);
所屬文件 OS_TASK.C 調用者任務或初始化代碼 開關量無
OSTaskCreateExt()建立一個新任務。與OSTaskCreate()不同的是,OSTaskCreateExt()允許用戶設置更多的細節(jié)內容。任務的建立可以在多任務環(huán)境啟動之前,也可以在正在運行的任務中建立,但中斷處理程序中不能建立新任務。一個任務必須為無限循環(huán)結構(如下所示),且不能有返回點。
參數
task是指向任務代碼的指針。
Pdata指針指向一個數據結構,該結構用來在建立任務時向任務傳遞參數。下例中說明μC/OS中的任務代碼結構以及如何傳遞參數pdata:(如果在程序中不使用參數pdata,為了避免在編譯中出現“參數未使用”的警告信息,可以寫一句pdata=
pdata;)
ptos為指向任務堆棧棧頂的指針。任務堆棧用來保存局部變量,函數參數,返回地址以及中斷時的CPU寄存器內容。任務堆棧的大小決定于任務的需要及預計的中斷嵌套層數。計算堆棧的大小,需要知道任務的局部變量所占的空間,可能產生嵌套調用的函數,及中斷嵌套所需空間。如果初始化常量OS_STK_GROWTH設為1,堆棧被設為向低端增長(從內存高地址向低地址增長)。此時ptos應該指向任務堆??臻g的最高地址。反之,如果OS_STK_GROWTH設為0,堆棧將從低地址向高地址增長。
prio為任務的優(yōu)先級。每個任務必須有一個唯一的優(yōu)先級作為標識。數字越小,優(yōu)先級越高。id是任務的標識,目前這個參數沒有實際的用途,但保留在OSTaskCreateExt()中供今后擴展,應用程序中可設置id與優(yōu)先級相同。
pbos為指向堆棧底端的指針。如果初始化常量OS_STK_GROWTH設為1,堆棧被設為從內存高地址向低地址增長。此時pbos應該指向任務堆??臻g的最低地址。反之,如果OS_STK_GROWTH設為0,堆棧將從低地址向高地址增長。pbos應該指向堆??臻g的最高地址。參數pbos用于堆棧檢測函數OSTaskStkChk()。
stk_size 指定任務堆棧的大小。其單位由OS_STK定義:當OS_STK的類型定義為INT8U、INT16U、INT32U的時候,
stk_size的單位為分別為字節(jié)(8位)、字(16位)和雙字(32位)。pext是一個用戶定義數據結構的指針,可作為TCB的擴展。例如,當任務切換時,用戶定義的數據結構中可存放浮點寄存器的數值,任務運行時間,任務切入次數等等信息。opt存放與任務相關的操作信息。opt的低8位由μC/OS保留,用戶不能使用。用戶可以使用opt的高8位。每一種操作由opt中的一位或幾位指定,當相應的位被置位時,表示選擇某種操作。
當前的μC/OS版本支持下列操作:
OS_TASK_OPT_STK_CHK:決定是否進行任務堆棧檢查。
OS_TASK_OPT_STK_CLR:決定是否清空堆棧。
OS_TASK_OPT_SAVE_FP:決定是否保存浮點寄存器的數值。此項操作僅當處理器有浮點硬件時有效。保存操作由硬件相關的代碼完成。
其他操作請參考文件uCOS_II.H。
返回值
OSTaskCreateExt()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_PRIO_EXIST:具有該優(yōu)先級的任務已經存在。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO。
OS_NO_MORE_TCB:系統(tǒng)中沒有OS_TCB可以分配給任務了。
注意/警告:任務堆棧必須聲明為OS_STK類型。
在任務中必須進行μC/OS提供的下述過程之一:延時等待、任務掛起、等待事件發(fā)生(等待信號量,消息郵箱、消息隊列),以使其他任務得到CPU。
用戶程序中不能使用優(yōu)先級0,1,2,3,以及OS_LOWEST_PRIO-3,
OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO。這些優(yōu)先級μC/OS系統(tǒng)保留,其余56個優(yōu)先級提供給應用程序。
INT8U OSTaskDel (INT8U prio);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_DEL_EN
OSTaskDel()函數刪除一個指定優(yōu)先級的任務。任務可以傳遞自己的優(yōu)先級給OSTaskDel(),從而刪除自身。如果任務不知道自己的優(yōu)先級,還可以傳遞參數OS_PRIO_SELF。被刪除的任務將回到休眠狀態(tài)。任務被刪除后可以用函數OSTaskCreate()或OSTaskCreateExt()重新建立。
參數
prio為指定要刪除任務的優(yōu)先級,也可以用參數OS_PRIO_SELF代替,此時,下一個優(yōu)先級最高的就緒任務將開始運行。
返回值
OSTaskDel()的返回值為下述之一: OS_NO_ERR:函數調用成功。
OS_TASK_DEL_IDLE:錯誤操作,試圖刪除空閑任務(Idle task)。
OS_TASK_DEL_ ERR:錯誤操作,指定要刪除的任務不存在。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO。
OS_TASK_DEL_ISR:錯誤操作,試圖在中斷處理程序中刪除任務。
注意/警告
OSTaskDel()將判斷用戶是否試圖刪除μC/OS中的空閑任務(Idle
task)。
在刪除占用系統(tǒng)資源的任務時要小心,此時,為安全起見可以用另一個函數OSTaskDelReq()。
INT8U OSDelReq (INT8U prio);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_DEL_EN
OSTaskDelReq()函數請求一個任務刪除自身。通常OSTaskDelReq()用于刪除一個占有系統(tǒng)資源的任務(例如任務建立了信號量)。對于此類任務,在刪除任務之前應當先釋放任務占用的系統(tǒng)資源。具體的做法是:在需要被刪除的任務中調用OSTaskDelReq()檢測是否有其他任務的刪除請求,如果有,則釋放自身占用的資源,然后調用OSTaskDel()刪除自身。例如,假設任務5要刪除任務10,而任務10占有系統(tǒng)資源,此時任務5不能直接調用OSTaskDel(10)刪除任務10,而應該調用OSTaskDelReq(10)向任務10發(fā)送刪除請求。在任務10中調用OSTaskDelReq(OS_PRIO_SELF),并檢測返回值。如果返回OS_TASK_DEL_REQ,則表明有來自其他任務的刪除請求,此時任務10應該先釋放資源,然后調用OSTaskDel(OS_PRIO_SELF)刪除自己。任務5可以循環(huán)調用OSTaskDelReq(10)并檢測返回值,如果返回OS_TASK_NOT_EXIST,表明任務10已經成功刪除。
參數
prio為要求刪除任務的優(yōu)先級。如果參數為OS_PRIO_SELF,則表示調用函數的任務正在查詢是否有來自其他任務的刪除請求。
返回值
OSTaskDelReq()的返回值為下述之一:
OS_NO_ERR:刪除請求已經被任務記錄。
OS_TASK_NOT_EXIST:指定的任務不存。發(fā)送刪除請求的任務可以等待此返回值,看刪除是否成功。
OS_TASK_DEL_IDLE:錯誤操作,試圖刪除空閑任務(Idle task)。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO或沒有設定OS_PRIO_SELF的值。
OS_TASK_DEL_REQ:當前任務收到來自其他任務的刪除請求。
注意/警告
OSTaskDelReq()將判斷用戶是否試圖刪除μC/OS中的空閑任務(Idle
task)。
INT8U OSTaskQuery ( INT8U prio, OS_TCB *pdata);
所屬文件 OS_TASK.C 調用者任務或中斷 開關量無
OSTaskQuery()用于獲取任務信息,函數返回任務TCB的一個完整的拷貝。應用程序必須建立一個OS_TCB類型的數據結構容納返回的數據。需要提醒用戶的是,在對任務OS_TCB對象中的數據操作時要小心,尤其是數據項OSTCBNext和OSTCBPrev。它們分別指向TCB鏈表中的后一項和前一項。
參數
prio為指定要獲取TCB內容的任務優(yōu)先級,也可以指定參數OS_PRIO_SELF,獲取調用任務的信息。
pdata指向一個OS_TCB類型的數據結構,容納返回的任務TCB的一個拷貝。
返回值
OSTaskQuery()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_PRIO_ERR:參數指定的任務非法。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO。
注意/警告
任務控制塊(TCB)中所包含的數據成員取決于下述開關量在初始化時的設定(參見OS_CFG.H)
OS_TASK_CREATE_EN
OS_Q_EN
OS_MBOX_EN
OS_SEM_EN
OS_TASK_DEL_EN
INT8U OSTaskResume ( INT8U prio);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_SUSPEND_EN
OSTaskResume ()喚醒一個用OSTaskSuspend()函數掛起的任務。OSTaskResume()也是唯一能“解掛”掛起任務的函數。
參數
prio指定要喚醒任務的優(yōu)先級。
返回值
OSTaskResume ()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_TASK_RESUME_PRIO:要喚醒的任務不存在。
OS_TASK_NOT_SUSPENDED:要喚醒的任務不在掛起狀態(tài)。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于或等于OS_LOWEST_PRIO。
INT8U OSTaskStkChk ( INT8U prio, OS_STK_DATA *pdata);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_CREATE_EXT
OSTaskStkChk()檢查任務堆棧狀態(tài),計算指定任務堆棧中的未用空間和已用空間。使用OSTaskStkChk()函數要求所檢查的任務是被OSTaskCreateExt()函數建立的,且opt參數中OS_TASK_OPT_STK_CHK操作項打開。
計算堆棧未用空間的方法是從堆棧底端向頂端逐個字節(jié)比較,檢查堆棧中0的個數,直到一個非0的數值出現。這種方法的前提是堆棧建立時已經全部清零。要實現清零操作,需要在任務建立初始化堆棧時設置OS_TASK_OPT_STK_CLR為1。如果應用程序在初始化時已經將全部RAM清零,且不進行任務刪除操作,也可以設置OS_TASK_OPT_STK_CLR為0,這將加快OSTaskCreateExt()函數的執(zhí)行速度。
參數
prio為指定要獲取堆棧信息的任務優(yōu)先級,也可以指定參數OS_PRIO_SELF,獲取調用任務本身的信息。
pdata指向一個類型為OS_STK_DATA的數據結構,其中包含如下信息:
INT32U OSFree;
INT32U OSUsed;
返回值
OSTaskStkChk()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO,或未指定OS_PRIO_SELF。
OS_TASK_NOT_EXIST:指定的任務不存在。
OS_TASK_OPT_ERR:任務用OSTaskCreateExt()函數建立的時候沒有指定OS_TASK_OPT_STK_CHK操作,或者任務是用OSTaskCreate()函數建立的。
注意/警告
函數的執(zhí)行時間是由任務堆棧的大小決定的,事先不可預料。
在應用程序中可以把OS_STK_DATA結構中的數據項OSFree和OSUsed相加,可得到堆棧的大小。雖然原則上該函數可以在中斷程序中調用,但由于該函數可能執(zhí)行很長時間,所以實際中不提倡這種做法。
INT8U OSTaskSuspend ( INT8U prio);
所屬文件 OS_TASK.C 調用者任務 開關量
OS_TASK_SUSPEND_EN
OSTaskSuspend()無條件掛起一個任務。調用此函數的任務也可以傳遞參數OS_PRIO_SELF,掛起調用任務本身。當前任務掛起后,只有其他任務才能喚醒。任務掛起后,系統(tǒng)會重新進行任務調度,運行下一個優(yōu)先級最高的就緒任務。喚醒掛起任務需要調用函數OSTaskResume()。
任務的掛起是可以疊加到其他操作上的。例如,任務被掛起時正在進行延時操作,那么任務的喚醒就需要兩個條件:延時的結束以及其他任務的喚醒操作。又如,任務被掛起時正在等待信號量,當任務從信號量的等待對列中清除后也不能立即運行,而必須等到喚醒操作后。
參數
prio為指定要獲取掛起的任務優(yōu)先級,也可以指定參數OS_PRIO_SELF,掛起任務本身。此時,下一個優(yōu)先級最高的就緒任務將運行。
返回值
OSTaskSuspend()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_TASK_ SUSPEND_IDLE:試圖掛起μC/OS-II中的空閑任務(Idle
task)。此為非法操作。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO或沒有設定OS_PRIO_SELF的值。
OS_TASK_ SUSPEND _PRIO:要掛起的任務不存在。
注意/警告
在程序中OSTaskSuspend()和OSTaskResume()應該成對使用。
用OSTaskSuspend()掛起的任務只能用OSTaskResume()喚醒。
void OSTimeDly ( INT16U ticks);
所屬文件 OS_TIMC.C 調用者任務 開關量無
OSTimeDly()將一個任務延時若干個時鐘節(jié)拍。如果延時時間大于0,系統(tǒng)將立即進行任務調度。延時時間的長度可從0到65535個時鐘節(jié)拍。延時時間0表示不進行延時,函數將立即返回調用者。延時的具體時間依賴于系統(tǒng)每秒鐘有多少時鐘節(jié)拍(由文件SO_CFG.H中的常量OS_TICKS_PER_SEC設定)。
參數
ticks為要延時的時鐘節(jié)拍數。
注意/警告
注意到延時時間0表示不進行延時操作,而立即返回調用者。為了確保設定的延時時間,建議用戶設定的時鐘節(jié)拍數加1。例如,希望延時10個時鐘節(jié)拍,可設定參數為11。
void OSTimeDlyHMSM( INT8U hours,INT8U
minutes,INT8U seconds,INT8U
milli);
所屬文件 OS_TIMC.C 調用者任務 開關量無
OSTimeDlyHMSM()將一個任務延時若干時間。延時的單位是小時、分、秒、毫秒。所以使用OSTimeDlyHMSM()比OSTimeDly()更方便。調用OSTimeDlyHMSM()后,如果延時時間不為0,系統(tǒng)將立即進行任務調度。
參數
hours為延時小時數,范圍從0-255。
minutes為延時分鐘數,范圍從0-59。
seconds為延時秒數,范圍從0-59
milli為延時毫秒數,范圍從0-999。需要說明的是,延時操作函數都是以時鐘節(jié)拍為為單位的。實際的延時時間是時鐘節(jié)拍的整數倍。例如系統(tǒng)每次時鐘節(jié)拍間隔是10ms,如果設定延時為5ms,將不產生任何延時操作,而設定延時15ms,實際的延時是兩個時鐘節(jié)拍,也就是20ms。
返回值
OSTimeDlyHMSM()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_TIME_INVALID_MINUTES:參數錯誤,分鐘數大于59。
OS_TIME_INVALID_SECONDS:參數錯誤,秒數大于59。
OS_TIME_INVALID_MILLI:參數錯誤,毫秒數大于999。
OS_TIME_ZERO_DLY:四個參數全為0。
注意/警告
OSTimeDlyHMSM(0,0,0,0)表示不進行延時操作,而立即返回調用者。另外,如果延時總時間超過65535個時鐘節(jié)拍,將不能用OSTimeDlyResume()函數終止延時并喚醒任務。
void OSTimeDlyResume( INT8U prio);
所屬文件 OS_TIMC.C 調用者任務 開關量無
OSTimeDlyResume()喚醒一個用OSTimeDly()或OSTimeDlyHMSM()函數延時的任務。
參數
prio為指定要喚醒任務的優(yōu)先級。
返回值
OSTimeDlyResume()的返回值為下述之一:
OS_NO_ERR:函數調用成功。
OS_PRIO_INVALID:參數指定的優(yōu)先級大于OS_LOWEST_PRIO。
OS_TIME_NOT_DLY:要喚醒的任務不在延時狀態(tài)。
OS_TASK_NOT_EXIST:指定的任務不存在。
注意/警告
用戶不應該用OSTimeDlyResume()去喚醒一個設置了等待超時操作,并且正在等待事件發(fā)生的任務。操作的結果是使該任務結束等待,除非的確希望這么做。
OSTimeDlyResume()函數不能喚醒一個用OSTimeDlyHMSM()延時,且延時時間總計超過65535個時鐘節(jié)拍的任務。例如,如果系統(tǒng)時鐘為100Hz,OSTimeDlyResume()不能喚醒延時OSTimeDlyHMSM(0,10,55,350)或更長時間的任務。
(OSTimeDlyHMSM(0,10,55,350)共延時
[ 10 minutes *60 + (55+0.35)seconds
] *100 =65,535次時鐘節(jié)拍)
轉自:http://wangyingfangathena.blog.sohu.com/67251953.html