UCOSIII-常用API


代碼臨界區

CPU_SR_ALLOC()
OS_CRITICAL_ENTER()
OS_CRITICAL_EXIT()

延時

OSTimeDly()
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err)
OSTimeDlyResume()

 

鈎子函數

void App_OS_IdleTaskHook (void)

在空閑任務的鈎子函數 OSIdleTaskHook()中不能出現可以讓空閑任務進入等待態的代碼!

 

創建刪除函數

OSTaskCreate()
OSTaskDel((OS_TCB*)&Task2_TaskTCB,&err)

 

掛起恢復任務

OSTaskSuspend()
OSTaskResume()

 

時間片輪轉調度

OSSchedRoundRobinCfg(DEF_ENABLED,1,&err) 時間片輪轉調度初始化
void OSSchedRoundRobinYield (OS_ERR *p_err) 放棄時間片

 

中斷函數

OSIntEnter() 進入中斷時放在最前面
OSIntExit() 放在中斷函數最下面,用於退出中斷時做一次任務切換

 

定時器

OSTmrCreate()
OSTmrStart()
OSTmrStop()
在定時器的回調函數里面一定要注意避免使用任何可以阻塞或者刪除掉定時器任務的函數!

 

信號量

OSSemCreate() 創建一個信號量
OSSemDel() 刪除一個信號量
OSSemPend() 等待一個信號量
OSSemPost() 釋放一個信號量
OSSemPendAbort() 取消等待
OSSemSet() 強制設置一個信號量的值

 

互斥信號量(解決優先級反轉)

OSMutexCreate() 創建一個互斥信號量
OSMutexDel() 刪除一個互斥型信號量
OSMutexPend() 等待一個互斥型信號量
OSMutexPost() 釋放一個互斥型信號量
OSMutexPendAbort() 取消等待
只有任務才能使用互斥信號量(中斷服務程序則不可以)

 

任務內建信號量

OSTaskSemPend() 等待任務信號量
OSTaskSemPost() 發布任務信號量
OSTaskSemPendAbort() 取消等待任務信號量
OSTaskSemSet() 強行設置任務信號量計數

 

消息隊列

OSQCreate() 創建一個消息隊列
OSQDel() 刪除一個消息隊列
OSQFlush() 清空一個消息隊列
OSQPend() 等待消息隊列
OSQPendAbort() 取消等待消息隊列
OSQPost() 向消息隊列發送一條消息
中斷服務程序只能使用 OSQPost()函數!

 

內建消息隊列

OSTaskQPend() 等待消息
OSTaskQPost() 向任務發送一條消息
OSTaskQPendAbort() 取消等待消息
OSTaskQFlush() 清空任務的消息隊列
ISR只能OSTaskQPost()!

 

同時請求多個內建對象

UCOSIII 中只支持同時等待多個信號量和消息隊列, 不支持同時等待多個事件標志組和互斥信號量

OSPendMulti()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM