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

正文內(nèi)容

ucosii原理ppt課件(編輯修改稿)

2025-02-10 04:42 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 //互斥型信號(hào)量指針 INT16U timeout, //等待時(shí)限 INT8U *err //錯(cuò)誤信息 ); 任務(wù)可以通過(guò)調(diào)用函數(shù) OSMutexPost( )發(fā)送一個(gè)互斥型信號(hào)量,這個(gè)函數(shù)的原型為: INT8U OSMutexPost ( OS_EVENT *pevent //互斥型信號(hào)量指針 ); 消息郵箱及其操作 如果把數(shù)據(jù)緩沖區(qū)的指針賦給一個(gè)事件控制塊的成員 OSEventPrt,同時(shí)使事件控制塊的成員 OSEventType為常數(shù)OS_EVENT_TYPE_MBOX,則該事件控制塊就叫做消息郵箱,消息郵箱是在兩個(gè)需要通信的任務(wù)之間通過(guò)傳遞數(shù)據(jù)緩沖區(qū)指針的方法來(lái)通信的。 創(chuàng)建郵箱需要調(diào)用函數(shù) OSMboxCreate ( ), 這個(gè)函數(shù)的原型為: OS_EVENT *OSMboxCreate ( void *msg //消息指針 ); 函數(shù)中的參數(shù) msg為消息的指針 , 函數(shù)的返回值為消息郵箱的指針 。 調(diào)用函數(shù) OSMboxCreate ( )需先定義 msg的初始值。在一般的情況下,這個(gè)初始值為 NULL;但也可以事先定義一個(gè)郵箱,然后把這個(gè)郵箱的指針作為參數(shù)傳遞到函數(shù) OSMboxCreate ( )中,使之一開(kāi)始就指向一個(gè)郵箱。 任務(wù)可以通過(guò)調(diào)用函數(shù) OSMboxPost ( )向消息郵箱發(fā)送消息 , 這個(gè)函數(shù)的原型為: INT8U OSMboxPost ( OS_EVENT *pevent, //消息郵箱指針 void *msg //消息指針 ); 當(dāng)一個(gè)任務(wù)請(qǐng)求郵箱時(shí)需要調(diào)用函數(shù) OSMboxPend( ), 這個(gè)函數(shù)的主要作用就是查看郵箱指針 OSEventPtr是否為NULL, 如果不是 NULL就把郵箱中的消息指針?lè)祷亟o調(diào)用函數(shù)的任務(wù) , 同時(shí)用 OS_NO_ERR通過(guò)函數(shù)的參數(shù) err通知任務(wù)獲取消息成功;如果郵箱指針 OSEventPtr是 NULL,則使任務(wù)進(jìn)入等待狀態(tài) , 并引發(fā)一次任務(wù)調(diào)度 。 函數(shù) OSMboxPend( )的原型為: void *OSMboxPend ( OS_EVENT *pevent, //請(qǐng)求消息郵箱指針 INT16U timeout, //等待時(shí)限 INT8U *err //錯(cuò)誤信息 ); 消息隊(duì)列及其操作 使用消息隊(duì)列可以在任務(wù)之間傳遞多條消息 。 消息隊(duì)列由三個(gè)部分組成:事件控制塊 、 消息隊(duì)列和消息 。 當(dāng) 把 事 件 控 制 塊 成 員 OSEventType 的 值 置 為OS_EVENT_TYPE_Q時(shí) , 該事件控制塊描述的就是一個(gè)消息隊(duì)列 。 消息隊(duì)列的數(shù)據(jù)結(jié)構(gòu)如圖 421所示。從圖中可以看到,消息隊(duì)列相當(dāng)于一個(gè)共用一個(gè)任務(wù)等待列表的消息郵箱數(shù)組,事件控制塊成員 OSEventPtr指向了一個(gè)叫做隊(duì)列控制塊( OS_Q)的結(jié)構(gòu),該結(jié)構(gòu)管理了一個(gè)數(shù)組 MsgTbl[ ],該數(shù)組中的元素都是一些指向消息的指針。 其中,可以移動(dòng)的指針為 OSQIn和 OSQOut,而指針OSQStart和 OSQEnd只是一個(gè)標(biāo)志(常指針)。當(dāng)可移動(dòng)的指針 OSQIn或 OSQOut移動(dòng)到數(shù)組末尾,也就是與 OSQEnd相等時(shí),可移動(dòng)的指針將會(huì)被調(diào)整到數(shù)組的起始位置OSQStart。也就是說(shuō),從效果上來(lái)看,指針 OSQEnd與OSQStart等值。于是,這個(gè)由消息指針構(gòu)成的數(shù)組就頭尾銜接起來(lái)形成了一個(gè)如圖所示的循環(huán)的隊(duì)列。 為了對(duì)圖所示的消息指針數(shù)組進(jìn)行有效的管理 ,μC/OSII把消息指針數(shù)組的基本參數(shù)都記錄在一個(gè)叫做隊(duì)列控制塊的結(jié)構(gòu)中 , 隊(duì)列控制塊的結(jié)構(gòu)如下: typedef struct os_q { struct os_q *OSQPtr。 void **OSQStart。 void **OSQEnd。 void **OSQIn。 void **OSQOut。 INT16U OSQSize。 INT16U OSQEntries。 } OS_Q。 在 μC/OSII初始化時(shí),系統(tǒng)將按文件 OS_MAX_QS定義 OS_MAX_QS個(gè)隊(duì)列控制塊,并用隊(duì)列控制塊中的指針 OSQPtr將所有隊(duì)列控制塊鏈接為鏈表。由于這時(shí)還沒(méi)有使用它們,故這個(gè)鏈表叫做空隊(duì)列控制塊鏈表 創(chuàng)建一個(gè)消息隊(duì)列首先需要定義一指針數(shù)組 , 然后把各個(gè)消息數(shù)據(jù)緩沖區(qū)的首地址存入這個(gè)數(shù)組中 , 然后再調(diào)用函數(shù) OSQCreate( )來(lái)創(chuàng)建消息隊(duì)列 。 創(chuàng)建消息隊(duì)列函數(shù)OSQCreate( )的原型為: OS_EVENT OSQCreate( void**start, //指針數(shù)組的地址 INT16U size //數(shù)組長(zhǎng)度 )。 請(qǐng)求消息隊(duì)列的目的是為了從消息隊(duì)列中獲取消息 。 任務(wù)請(qǐng)求消息隊(duì)列需要調(diào)用函數(shù) OSQPend( ), 該函數(shù)的原型為: void*OSQPend( OS_EVENT*pevent, //所請(qǐng)求的消息隊(duì)列的指針 INT16U timeout, //等待時(shí)限 INT8U*err //錯(cuò)誤信息 )。 任務(wù)需要通過(guò)調(diào)用函數(shù) OSQPost( )或 OSQPostFront( )來(lái)向消息隊(duì)列發(fā)送消息 。 函數(shù) OSQPost( )以 FIFO( 先進(jìn)先出 ) 的方式組織消息隊(duì)列 , 函數(shù) OSQPostFront( )以 LIFO(
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1