freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ucos-ii_api_參考手冊-wenkub

2023-07-10 22:52:11 本頁面
 

【正文】 μC/OSⅡ */ . . CommMbox = OSMboxCreate((void *)0)。如果沒有可用的事件控制塊,返回空指針。消息郵箱允許任務(wù)或中斷向其他一個(gè)或幾個(gè)任務(wù)發(fā)送消息。 for (。注意/警告必須先建立消息郵箱,然后使用。參數(shù)pevent 是指向需要查看的消息郵箱的指針。所屬文件調(diào)用者開關(guān)量任務(wù)或中斷OS_MBOX_ENOSMboxAccept()函數(shù)查看指定的消息郵箱是否有需要的消息。 保存中斷現(xiàn)場 PUSH ES PUSH DS . . CALL FAR PTR _OSIntExit 。當(dāng)最后一層嵌套的中斷執(zhí)行完畢后,如果有更高優(yōu)先級的任務(wù)準(zhǔn)備就緒,μC/OSⅡ會(huì)調(diào)用任務(wù)調(diào)度函數(shù),在這種情況下,中斷返回到更高優(yōu)先級的任務(wù)而不是被中斷了的任務(wù)。 恢復(fù)中斷現(xiàn)場 POP ES POPA IRET 。 MOV AX, DGROUP 。 通知內(nèi)核進(jìn)入中斷 . . POP DS 。 保存中斷現(xiàn)場 PUSH ES PUSH DS。OSIntEnter()函數(shù)通常和OSIntExit()函數(shù)聯(lián)合使用。參數(shù)無返回值無注意/警告必須先于OSStart()函數(shù)的調(diào)用范例:void main (void){ . OSInit()。參考手冊UCOSII API 參考手冊本章提供了μC/OSⅡ的用戶指南。 /* 初始化 uC/OSII */ . OSStart()。參數(shù)無返回值無注意/警告在任務(wù)級不能調(diào)用該函數(shù)。 MOV AX, DGROUP 。 恢復(fù)中斷現(xiàn)場 POP ES POPA IRET 。 讀入數(shù)據(jù)段 MOV DS, AX。 中斷返回 ISRx ENDP OSIntExit( )Void OSIntExit(void)。參數(shù)無返回值無注意/警告在任務(wù)級不能調(diào)用該函數(shù)。 通知內(nèi)核進(jìn)入中斷 POP DS 。不同于OSMboxPend()函數(shù),如果沒有需要的消息,OSMboxAccept()函數(shù)并不掛起任務(wù)。當(dāng)建立消息郵箱時(shí),該指針返回到用戶程序。范例:OS_EVENT *CommMbox。) { msg = OSMboxAccept(CommMbox)。參數(shù)msg 參數(shù)用來初始化建立的消息郵箱。注意/警告必須先建立消息郵箱,然后使用。 /* 建立消息郵箱 */ OSStart()。消息是一個(gè)以指針定義的變量,在不同的程序中消息的使用也可能不同。一個(gè)由OSTaskSuspend()函數(shù)掛起的任務(wù)也可以接受消息,但這個(gè)任務(wù)將一直保持掛起狀態(tài)直到通過調(diào)用OSTaskResume()函數(shù)恢復(fù)任務(wù)的運(yùn)行。Timeout 允許一個(gè)任務(wù)在經(jīng)過了指定數(shù)目的時(shí)鐘節(jié)拍后還沒有得到需要的消息時(shí)恢復(fù)運(yùn)行。Err 是指向包含錯(cuò)誤碼的變量的指針。雖然規(guī)定了不允許從中斷調(diào)用該函數(shù),但μC/OSⅡ仍然包含了檢測這種情況的功能。注意/警告必須先建立消息郵箱,然后使用。 void *msg。err)。如果消息郵箱中已經(jīng)存在消息,返回錯(cuò)誤碼說明消息郵箱已滿。參數(shù)pevent 是指向即將接受消息的消息郵箱的指針。消息是一個(gè)指針長度的變量,在不同的程序中消息的使用也可能不同。l OS_ERR_EVENT_TYPE :pevent 不是指向消息郵箱的指針。INT8U CommRxBuf[100]。) { . err = OSMboxPost(CommMbox, (void *)amp。用戶程序必須分配一個(gè)OS_MBOX_DATA的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)用來從消息郵箱的事件控制塊接受數(shù)據(jù)。(參考OSMboxCreate()函數(shù))。注意/警告必須先建立消息郵箱,然后使用。 pdata = pdata。 if (err == OS_NO_ERR) { . /* ,說明消息郵箱非空*/ } . }} OSMemCreate( )OS_MEM *OSMemCreate( void *addr, INT32U nblks ,INT32U blksize, INT8U *err)。參數(shù)addr 建立的內(nèi)存區(qū)的起始地址。Blksize 每個(gè)內(nèi)存塊的大小,最少應(yīng)該能夠容納一個(gè)指針。OS_MEM_INVALID_BLKS :沒有為每一個(gè)內(nèi)存區(qū)建立至少兩個(gè)內(nèi)存塊。注意/警告必須首先建立內(nèi)存區(qū),然后使用。 OSInit()。 . OSStart()。可以多次調(diào)用OSMemGet()函數(shù)。l OS_MEM_NO_FREE_BLKS :內(nèi)存區(qū)已經(jīng)沒有空間分配給內(nèi)存塊。范例:OS_MEM *CommMem。) { msg = OSMemGet(CommMem, amp。參數(shù)pmem 是指向內(nèi)存區(qū)控制塊的指針,可以從OSMemCreate()函數(shù) 返回得到。注意/警告必須首先建立內(nèi)存區(qū),然后使用。void Task (void *pdata){ INT8U err。 if (err == OS_NO_ERR) { . /* 釋放內(nèi)存塊 */ } . }} OSMemQuery( )INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata)。參數(shù)pmem 是指向內(nèi)存區(qū)控制塊的指針,可以從OSMemCreate()函數(shù) 返回得到。 /*每個(gè)內(nèi)存塊的大小 */INT32U OSNBlks。注意/警告必須首先建立內(nèi)存區(qū),然后使用。 pdata = pdata。 . }}OSQAccept( )Void *OSQAccept(OS_EVENT *pevent)。通常中斷調(diào)用該函數(shù),因?yàn)橹袛嗖辉试S掛起等待消息。返回值如果消息已經(jīng)到達(dá),返回指向該消息的指針;如果消息隊(duì)列沒有消息,返回空指針。 pdata = pdata。所屬文件調(diào)用者開關(guān)量任務(wù)或啟動(dòng)代碼OS_Q_ENOSQCreate()函數(shù)建立一個(gè)消息隊(duì)列。Size 是消息內(nèi)存區(qū)的大小。范例:OS_EVENT *CommQ。CommMsg[0], 10)。不管隊(duì)列中是否有消息,這個(gè)函數(shù)的執(zhí)行時(shí)間都是相同的。返回值OSQFlush()函數(shù)的返回值為下述之一:l OS_NO_ERR :消息隊(duì)列被成功清空l OS_ERR_EVENT_TYPE :試圖清除不是消息隊(duì)列的對象注意/警告必須先建立消息隊(duì)列,然后使用。 /* 初始化μC/OSⅡ */ . err = OSQFlush(CommQ)。消息通過中斷或另外的任務(wù)發(fā)送給需要的任務(wù)。如果同時(shí)有多個(gè)任務(wù)等待同一個(gè)消息,μC/OSⅡ默認(rèn)最高優(yōu)先級的任務(wù)取得消息并且任務(wù)恢復(fù)執(zhí)行。(參考OSMboxCreate()函數(shù))。這個(gè)時(shí)間長度并不是非常嚴(yán)格的,可能存在一個(gè)時(shí)鐘節(jié)拍的誤差,因?yàn)橹挥性谝粋€(gè)時(shí)鐘節(jié)拍結(jié)束后才會(huì)減少定義的等待超時(shí)時(shí)鐘節(jié)拍。l OS_ERR_PEND_ISR :從中斷調(diào)用該函數(shù)。如果沒有在指定數(shù)目的時(shí)鐘節(jié)拍內(nèi)接受到需要的消息,OSQPend()函數(shù)返回空指針并且將 *err設(shè)置為OS_TIMEOUT。void CommTask(void *data){ INT8U err。) { . . msg = OSQPend(CommQ, 100, amp。消息是一個(gè)指針長度的變量,在不同的程序中消息的使用也可能不同。如果等待消息的任務(wù)優(yōu)先級比發(fā)送消息的任務(wù)優(yōu)先級高,那么高優(yōu)先級的任務(wù)將得到消息而恢復(fù)執(zhí)行,也就是說,發(fā)生了一次任務(wù)切換。(參考OSQCreate()函數(shù))。返回值OSQPost()函數(shù)的返回值為下述之一:l OS_NO_ERR :消息成功的放到消息隊(duì)列中。不允許傳遞一個(gè)空指針。 pdata = pdata。 if (err == OS_NO_ERR) { . /* 將消息放入消息隊(duì)列 */ . } else { . /* 消息隊(duì)列已滿 */ . } . . }} OSQPostFront( )INT8U OSQPostFront(OS_EVENT *pevent, void *msg)。消息是一個(gè)指針長度的變量,在不同的程序中消息的使用也可能不同。如果等待消息的任務(wù)優(yōu)先級比發(fā)送消息的任務(wù)優(yōu)先級高,那么高優(yōu)先級的任務(wù)將得到消息而恢復(fù)執(zhí)行,也就是說,發(fā)生了一次任務(wù)切換參數(shù)pevent 是指向即將接受消息的消息隊(duì)列的指針。消息是一個(gè)指針長度的變量,在不同的程序中消息的使用也可能不同。l OS_ERR_EVENT_TYPE :pevent 不是指向消息隊(duì)列的指針。INT8U CommRxBuf[100]。) { . err = OSQPostFront(CommQ, (void *)amp。用戶程序必須建立一個(gè)OS_Q_DATA的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)用來保存從消息隊(duì)列的事件控制塊得到的數(shù)據(jù)。該指針的值在建立該消息郵箱時(shí)可以得到。 /* 消息隊(duì)列的等待隊(duì)列*/ INT8U OSEventGrp;返回值OSuery()函數(shù)的返回值為下述之一:l OS_NO_ERR :調(diào)用成功l OS_ERR_EVENT_TYPE :pevent 不是指向消息隊(duì)列的指針。 INT8U err。qdata)。在這種情況下,中斷仍然可以被接受和執(zhí)行(中斷必須允許)。因?yàn)槿蝿?wù)調(diào)度已經(jīng)被禁止,其他任務(wù)不能運(yùn)行,這會(huì)導(dǎo)致系統(tǒng)死鎖。 /* 停止任務(wù)調(diào)度 */ . . /* 不允許被打斷的執(zhí)行代碼 */ . OSSchedUnlock()。因?yàn)槿蝿?wù)調(diào)度已經(jīng)被禁止,其他任務(wù)不能運(yùn)行,這會(huì)導(dǎo)致系統(tǒng)死鎖。 /* 停止任務(wù)調(diào)度 */ . . /* 不允許被打斷的執(zhí)行代碼 */ . OSSchedUnlock()。中斷調(diào)用該函數(shù)來查詢信號(hào)量。返回值當(dāng)調(diào)用OSSemAccept()函數(shù)時(shí),設(shè)備信號(hào)量的值大于零,說明設(shè)備就緒,這個(gè)值被返回調(diào)用者,設(shè)備信號(hào)量的值減一。void Task (void *pdata){ INT16U value。 /*查看設(shè)備是否就緒或事件是否發(fā)生 */ if (value 0) { . /* 就緒,執(zhí)行處理代碼 */ . } . . }}OSSemCreate( )OS_EVENT *OSSemCreate(WORD value)。返回值OSSemCreate()函數(shù)返回指向分配給所建立的消息郵箱的事件控制塊的指針。void main(void){ . . OSInit()。所屬文件調(diào)用者開關(guān)量任務(wù)OS_SEM_ENOSSemPend()函數(shù)用于任務(wù)試圖取得設(shè)備的使用權(quán),任務(wù)需要和其他任務(wù)或中斷同步,任務(wù)需要等待特定事件的發(fā)生的場合。如果在預(yù)期的時(shí)鐘節(jié)拍內(nèi)信號(hào)量被置起,μC/OSⅡ默認(rèn)最高優(yōu)先級的任務(wù)取得信號(hào)量恢復(fù)執(zhí)行。(參
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1