CMSIS-RTOS功能概述
以下列表簡要概述了所有CMSIS-RTOS功能。標(biāo)有$的函數(shù)是可選的。特定的CMSIS-RTOS實現(xiàn)可能無法提供所有功能,但osFeatureXXXX定義明確指出了這一點。
注意RTX實現(xiàn)不支持的功能標(biāo)有(*)。
內(nèi)核信息和控制
osKernelInitialize:初始化RTOS內(nèi)核。
osKernelStart:啟動RTOS內(nèi)核。
osKernelRunning:查詢RTOS內(nèi)核是否正在運行。
osKernelSysTick:獲取RTOS內(nèi)核系統(tǒng)計時器計數(shù)器。
osKernelSysTickFrequency:RTOS內(nèi)核系統(tǒng)定時器頻率,單位為Hz。
osKernelSysTickMicroSec:將微秒值轉(zhuǎn)換為RTOS內(nèi)核系統(tǒng)計時器值。
線程管理
osThreadCreate:開始執(zhí)行線程函數(shù)。
osThreadTerminate:停止執(zhí)行線程函數(shù)。
osThreadYield:將執(zhí)行傳遞給下一個就緒線程函數(shù)。
osThreadGetId:獲取線程標(biāo)識符以引用此線程。
osThreadSetPriority:更改線程函數(shù)的執(zhí)行優(yōu)先級。
osThreadGetPriority:獲取線程函數(shù)的當(dāng)前執(zhí)行優(yōu)先級。
通用等待功能
osDelay:等待指定的時間。
osWait:等待Signal,Message或Mail類型的任何事件。(*)
定時器管理
osTimerCreate:定義計時器回調(diào)函數(shù)的屬性。
osTimerStart:使用時間值啟動或重新啟動計時器。
osTimerStop:停止計時器。
osTimerDelete:刪除計時器。
信號事件
osSignalSet:設(shè)置線程的信號標(biāo)志。
osSignalClear:重置線程的信號標(biāo)志。
osSignalWait:暫停執(zhí)行,直到設(shè)置了特定的信號標(biāo)志。
互斥
osMutexCreate:定義并初始化互斥鎖。
osMutexWait:獲取互斥鎖或等待它變?yōu)榭捎谩?br />
osMutexRelease:釋放互斥鎖。
osMutexDelete:刪除互斥鎖。
信號燈
osSemaphoreCreate:定義并初始化信號量。
osSemaphoreWait:獲取信號量令牌或等到它可用。
osSemaphoreRelease:釋放信號量令牌。
osSemaphoreDelete:刪除信號量。
記憶池
osPoolCreate:定義并初始化一個修復(fù)大小的內(nèi)存池。
osPoolAlloc:分配內(nèi)存塊。
osPoolCAlloc:分配一個內(nèi)存塊并將該塊置零。
osPoolFree:將內(nèi)存塊返回到內(nèi)存池。
消息隊列
osMessageCreate:定義并初始化消息隊列。
osMessagePut:將消息放入消息隊列。
osMessageGet:獲取消息或暫停線程執(zhí)行,直到消息到達。
郵件隊列
osMailCreate:使用固定大小的內(nèi)存塊定義和初始化郵件隊列。
osMailAlloc:分配內(nèi)存塊。
osMailCAlloc:分配一個內(nèi)存塊并將該塊置零。
osMailPut:將內(nèi)存塊放入郵件隊列。
osMailGet:獲取郵件或暫停線程執(zhí)行,直到郵件到達。
osMailFree:將內(nèi)存塊返回到郵件隊列。
RTX特定功能
os_idle_demon:當(dāng)沒有其他線程準(zhǔn)備好運行時,系統(tǒng)線程正在運行。
os_suspend:掛起RTX任務(wù)調(diào)度程序。
os_resume:恢復(fù)RTX任務(wù)調(diào)度程序。
os_tick_init:將備用硬件計時器初始化為RTX內(nèi)核計時器。
os_tick_val:獲取備用硬件計時器的當(dāng)前值。
os_tick_ovf:獲取備用硬件定時器的溢出標(biāo)志。
os_tick_irqack:確認備用硬件定時器中斷。
os_error:檢測到運行時錯誤時調(diào)用。
超時值
超時值指定超時或時間延遲過去之前的計時器滴答數(shù)。該值是上限,取決于自上次計時器滴答以來經(jīng)過的實際時間。
對于值1,系統(tǒng)等待直到下一個計時器滴答發(fā)生。這意味著實際超時值可以是小于指定超時值的一個計時器滴答。
計時器值
來自中斷服務(wù)程序的調(diào)用
可以從線程和中斷服務(wù)例程(ISR)調(diào)用以下CMSIS-RTOS函數(shù):
osKernelRunning
osSignalSet
osSemaphoreRelease
osPoolAlloc,osPoolCAlloc,osPoolFree
osMessagePut,osMessageGet
osMailAlloc,osMailCAlloc,osMailGet,osMailPut,osMailFree
無法從ISR調(diào)用的函數(shù)正在驗證中斷狀態(tài),并在從ISR上下文調(diào)用狀態(tài)代碼osErrorISR時返回。在一些實現(xiàn)中,可以使用HARD FAULT向量捕獲該條件。
一些CMSIS-RTOS實現(xiàn)同時支持來自多個ISR的CMSIS-RTOS函數(shù)調(diào)用。如果這是不可能的,CMSIS-RTOS拒絕嵌套ISR函數(shù)的調(diào)用,狀態(tài)代碼為osErrorISRRecursive。
總結(jié)
以上是生活随笔為你收集整理的CMSIS-RTOS功能概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一面bytedance
- 下一篇: 【加密】RSA加密之算法