UC/OSⅡ 基本函數*************************************************************************************** 事件標志管理 (EVENT FLAGS MANAGEMENT)** OSFlagAccept() 檢查事件標志組函數(標志組的指針、事件標志位、等待事件標志位的方式、錯誤碼指針)* OSFlagCreate() 建立一個事件標志組(初值、錯誤碼)* OSFlagDel() 刪除一個事件標志組(指針、條件值、錯誤值)* OSFlagPend() 等待事件標志組的事件標志位(事件組指針、需要檢查的標志位、等待事件標志位的方式、* 允許等待的時鐘節(jié)拍、出錯代碼的時鐘節(jié)拍)* OSFlagPost() 置位或清0事件標志組中的標志位(指針、標志位、條件值、錯誤碼)* OSFlagQuery() 查詢事件標志組的當前事件標志狀態(tài)(事件標志組的指針、錯誤代碼的指針)***************************************************************************************************************************************************************************** 消息郵箱管理 (MESSAGE MAILBOX MANAGEMENT)** OSMboxAccept () 查看消息郵箱(消息郵箱指針)* OSMboxCreate () 建立并初始化一個消息郵箱(msg 參數不為空含內容)* OSMboxDel () 刪除消息郵箱(消息郵箱指針、刪除條件、出錯代碼指針)* OSMboxPend () 等待一個消息郵箱函數(消息郵箱指針、允許等待的時鐘節(jié)拍、代碼錯誤指針)* OSMboxPost () 發(fā)送消息函數(消息郵箱指針、即將實際發(fā)送給任務的消息)* OSMboxPostOpt () 向郵箱發(fā)送一則消息(郵箱指針、消息、條件)* OSMboxQuery () 查詢一個郵箱的當前狀態(tài)(信號量指針、狀態(tài)數據結構指針)***************************************************************************************************************************************************************************** 內存管理項 (MEMORY MANAGEMENT)* OSMemCreate () 建立并初始化一塊內存區(qū)(起始地址、需要的內存塊數目、內存塊大小、返回錯誤的指針)* OSMemGet () 從內存區(qū)分配一個內存塊* OSMemPut () 釋放一個內存塊,內存塊必須釋放回原先申請的內存區(qū)* OSMemQuery () 得到內存區(qū)的信息***************************************************************************************************************************************************************************** 互斥型信號量項管理 (MUTUAL EXCLUSION SEMAPHORE MANAGEMENT)** OSMutexAccept () 無等待地獲取互斥型信號量[任務不掛起](信號量指針、錯誤代碼)* OSMutexCreate () 建立并初始化一個互斥型信號量(優(yōu)先級繼承優(yōu)先級(PIP)、出錯代碼指針)* OSMutexDel () 刪除互斥型信號量(信號指針、刪除條件、錯誤指針)* OSMutexPend () 等待一個互斥型信號量(指針、等待超時時限、出錯代碼指針)* OSMutexPost () 釋放一個互斥型信號量(互斥型信號量指針)* OSMutexQuery () 查詢一個互斥型信號量的當前狀態(tài)(互斥型信號量指針、狀態(tài)數據結構指針)***************************************************************************************************************************************************************************** 消息隊列管理 (MESSAGE QUEUE MANAGEMENT)** OSQAccept () 檢查消息隊列中是否已經有需要的消息(消息隊列的指針)* OSQCreate () 建立一個消息隊列(消息內存區(qū)的基地址(指針數組)、消息內存區(qū)的大小)* OSQDel () 刪除一個消息隊列(消息隊列指針、刪除條件、錯誤指針)* OSQFlush () 清空消息隊列(指向得到消息隊列的指針)* OSQPend () 任務等待消息隊列中的消息(消息隊列指針、允許等待的時鐘節(jié)拍、代碼錯誤指針)* OSQPost () 向消息隊列發(fā)送一則消息FIFO(消息隊列指針、發(fā)送的消息)* OSQPostFront () 向消息隊列發(fā)送一則消息LIFO(消息隊列指針、發(fā)送的消息)* OSQPostOpt () 向消息隊列發(fā)送一則消息LIFO(消息隊列指針、發(fā)送的消息、發(fā)送條件)* OSQQuery () 查詢一個消息隊列的當前狀態(tài)(信號量指針、狀態(tài)數據結構指針)**************************************************************************************隊列控制塊是一個用于維護消息隊列信息的數據結構,它包含了以下的一些域。這里,仍然在各個變量前加入一個[.]來表示它們是數據結構中的一個域。* 1).OSQPtr: 在空閑隊列控制塊中鏈接所有的隊列控制塊。一旦建立了消息隊列,該域就不再有用了。* 2).OSQStart: 是指向消息隊列的指針數組的起始地址的指針。用戶應用程序在使用消息隊列之前必須先定義該數組* 3).OSQEnd: 是指向消息隊列結束單元的下一個地址的指針。該指針使得消息隊列構成一個循環(huán)的緩沖區(qū)。* 4).OSQIn: 是指向消息隊列中插入下一條消息的位置的指針。當.OSQIn和.OSQEnd相等時,.OSQIn被調整指向消息隊列的起始單元。* 5).OSQOut: 是指向消息隊列中下一個取出消息的位置的指針。當.OSQOut和.OSQEnd相等時,.OSQOut被調整指向消息隊列的起始單元。* 6).OSQSize: 是消息隊列中總的單元數。該值是在建立消息隊列時由用戶應用程序決定的。在uC/OS-II中,該值最大可以是65,535。* 7).OSQEntries: 是消息隊列中當前的消息數量。當消息隊列是空的時,該值為0。當消息隊列滿了以后,該值和 .OSQSize值一樣。 在消息隊列剛剛建立時,該值為0。**************************************************************************************/************************************************************************************************** 任務管理 (TASK MANAGEMENT)** OSTaskChangePrio () 改變一個任務的優(yōu)先級(任務舊的優(yōu)先級、任務新的優(yōu)先級)* OSTaskCreate () 建立任務(任務代碼指針、傳遞參數指針、分配任務堆棧棧頂指針、任務優(yōu)先級)* OSTaskCreateExt () 建立擴展任務(任務代碼指針/傳遞參數指針/分配任務堆棧棧頂指針/分配任務優(yōu)先級* //(未來的)優(yōu)先級標識(與優(yōu)先級相同)/分配任務堆棧棧底指針/指定堆棧的容量(檢驗用)* //指向用戶附加的數據域的指針/建立任務設定選項)* OSTaskDel () 刪除任務(任務的優(yōu)先級)* OSTaskDelReq () 請求一個任務刪除其它任務或自身?(任務的優(yōu)先級)* OSTaskResume () 喚醒一個用OSTaskSuspend()函數掛起的任務(任務的優(yōu)先級)* OSTaskStkChk () 檢查任務堆棧狀態(tài)(任務優(yōu)先級、檢驗堆棧數據結構)* OSTaskSuspend () 無條件掛起一個任務(任務優(yōu)先級)* OSTaskQuery () 獲取任務信息(任務指針、保存數據結構指針)**************************************************************************************/**************************************************************************************** 時鐘管理項 (TIME MANAGEMENT)** OSTimeDly () 任務延時函數(時鐘節(jié)拍數)* OSTimeDlyHMSM () 將一個任務延時若干時間(設定時、分、秒、毫秒)* OSTimeDlyResume () 喚醒一個用OSTimeDly()或OSTimeDlyHMSM()函數的任務(優(yōu)先級)* OSTimeGet () 獲取當前系統(tǒng)時鐘數值* OSTimeSet () 設置當前系統(tǒng)時鐘數值**************************************************************************************/************************************************************************************** 混雜函數定義** OSInit() 初始化UCOS-II函數* OSIntEnter() 中斷函數正在執(zhí)行* OSIntExit() 中斷函數已經完成(脫離中斷)* OSSchedLock() 給調度器上鎖* OSSchedUnlock() 給調度器解鎖* OSStart() 啟動多個任務* OSStatInit() 統(tǒng)計任務初始化* OSVersion() 獲得版本號**************************************************************************************/************************************************************************************** 內部函數原型 INTERNAL FUNCTION PROTOTYPES* 你在應用程序中不能使用它們 (Your application MUST NOT call these functions)** OS_Dummy() 建立一個虛擬函數* OS_EventTaskRdy() 使一個任務進入就緒態(tài)(OS_EVENT *pevent, void *msg, INT8U msk)* OS_EventTaskWait() 使一個任務進入等待某事件發(fā)生狀態(tài)(ECB指針)* OS_EventTO() 由于超時而將任務置為就緒態(tài)(ECB指針)* OS_EventWaitListInit() 事件控制塊列表初始化(事件控制塊指針)* OS_FlagInit() 初始化事件標志結構* OS_FlagUnlink() 把這個OS_FLAG_NODE從事件標志組的等待任務鏈表中刪除(OS_FLAG_NODE *pnode)* OS_MemInit() 初始化內存分區(qū)* OS_QInit() 初始化事件隊列結構* OS_Sched() 任務調度函數* OS_TaskIdle() 空閑任務函數(指向一個數據結構)* OS_TaskStat() 統(tǒng)計任務(指向一個數據結構)* OS_TCBInit() 初始化任務控制塊TCB(優(yōu)先級指針、棧頂指針、棧底指針、任務標志符、* 堆棧容量、擴展指針、選擇項)
評論