CMSIS-RTOS2 应用笔记 三 功能概述

xiaoxiao2021-02-27  134

CMSIS-RTOS2

概述在cmsis_os2.h头文件中实现的所有CMSIS-RTOS C API v2函数。

内核信息和控制

osKernelGetInfo:获取RTOS内核信息。osKernelGetState:获取当前的RTOS内核状态。osKernelGetSysTimerCount:获取RTOS内核系统定时器计数。osKernelGetSysTimerFreq:获取RTOS内核系统的定时器频率。osKernelInitialize:初始化RTOS内核。osKernelLock:锁定RTOS内核调度程序。osKernelUnlock:解锁RTOS内核调度程序。osKernelRestoreLock:恢复RTOS内核调度器锁定状态。osKernelResume:恢复RTOS内核调度程序。osKernelStart:启动RTOS内核调度程序。osKernelSuspend:挂起RTOS内核调度程序。osKernelGetTickCount:获取RTOS内核计数。osKernelGetTickFreq:获取RTOS内核滴答频率。 线程管理 osThreadDetach:分离线程(线程终止时可以回收线程存储)。osThreadEnumerate:枚举活动线程。osThreadExit:终止执行当前正在运行的线程。osThreadGetCount:获取活动线程的数量。osThreadGetId:返回当前正在运行的线程的线程ID。osThreadGetName:获取线程的名称。osThreadGetPriority:获取线程的当前优先级。osThreadGetStackSize:获取线程的堆栈大小。osThreadGetStackSpace:在执行期间基于堆栈水印记录获取线程的可用堆栈空间。osThreadGetState:获取当前线程的线程状态。osThreadJoin:等待指定的线程终止。osThreadNew:创建一个线程并将其添加到Active Threads。osThreadResume:恢复执行线程。osThreadSetPriority:更改线程的优先级。osThreadSuspend:挂起一个线程的执行。osThreadTerminate:终止线程的执行。osThreadYield:将控件传递到状态为READY的下一个线程。 线程标志 osThreadFlagsSet:设置线程的指定线程标志。osThreadFlagsClear:清除当前正在运行的线程的指定线程标志。osThreadFlagsGet:获取当前正在运行的线程的当前Thread Flags。osThreadFlagsWait:等待当前正在运行的线程的一个或多个线程标志变为信号。 事件标志 osEventFlagsGetName:获取Event Flags对象的名称。osEventFlagsNew:创建并初始化事件标志对象。osEventFlagsDelete:删除事件标志对象。osEventFlagsSet:设置指定的事件标志。osEventFlagsClear:清除指定的事件标志。osEventFlagsGet:获取当前的事件标志。osEventFlagsWait:等待一个或多个事件标志变为信号。 通用等待功能 osDelay:等待超时(延时)。osDelayUntil:等到指定的时间。 计时器管理 osTimerDelete:删除一个计时器。osTimerGetName:获取计时器的名称。osTimerIsRunning:检查一个计时器是否正在运行。osTimerNew:创建并初始化定时器。osTimerStart:启动或重启定时器。osTimerStop:停止定时器 互斥管理 osMutexAcquire:如果被锁定,则获取互斥量或超时。osMutexDelete:删除一个Mutex对象。osMutexGetName:获取Mutex对象的名称。osMutexGetOwner:获取拥有Mutex对象的线程。osMutexNew:创建和初始化一个Mutex对象。osMutexRelease:释放由osMutexAcquire获取的Mutex。 信号量 osSemaphoreAcquire:如果没有令牌可用,则获取信号量令牌或超时。osSemaphoreDelete:删除一个信号量对象。osSemaphoreGetCount:获取当前的信号量令牌计数。osSemaphoreGetName:获取信号量对象的名称。osSemaphoreNew:创建和初始化一个信号量对象。osSemaphoreRelease:释放由osSemaphoreAcquire获取的信号量令牌。 内存池 osMemoryPoolAlloc:从内存池分配一个内存块。osMemoryPoolDelete:删除内存池对象。osMemoryPoolFree:将分配的内存块返回到内存池。osMemoryPoolGetBlockSize:在内存池中获取内存块大小。osMemoryPoolGetCapacity:获取内存池中的最大内存块数。osMemoryPoolGetCount:获取内存池中使用的内存块数。osMemoryPoolGetName:获取内存池对象的名称。osMemoryPoolGetSpace:获取内存池中可用的内存块数。osMemoryPoolNew:创建和初始化内存池对象。 消息队列 osMessageQueueDelete:删除消息队列对象。osMessageQueueGet:如果Queue为空,则从队列获取消息或超时。osMessageQueueGetCapacity:获取消息队列中的最大消息数。osMessageQueueGetCount:获取消息队列中排队消息的数量。osMessageQueueGetMsgSize:在内存池中获取最大消息大小。osMessageQueueGetName:获取消息队列对象的名称。osMessageQueueGetSpace:获取消息队列中消息的可用插槽数。osMessageQueueNew:创建和初始化消息队列对象。osMessageQueuePut:如果队列已满,则将消息放入队列或超时。osMessageQueueReset:将消息队列重置为初始空状态。 RTX5具体API osRtxErrorNotify:操作系统错误回调函数。osRtxIdleThread:操作系统空闲线程。osRtxSysTimerSetup:OS系统定时器功能(默认实现使用SysTick)osRtxSysTimerEnable:启用系统定时器。osRtxSysTimerDisable:禁用系统定时器。osRtxSysTimerAckIRQ:确认系统定时器IRQ。osRtxSysTimerGetCount:获取系统计时器计数。osRtxSysTimerGetFreq:获取系统定时器频率。

可以从线程和中断服务程序(ISR)调用以下CMSIS-RTOS2函数:

osKernelGetSysTimerCount, osKernelGetSysTimerFreqosThreadFlagsSetosEventFlagsSet, osEventFlagsClear, osEventFlagsGet, osEventFlagsWaitosSemaphoreAcquire, osSemaphoreRelease, osSemaphoreGetCountosMemoryPoolAlloc, osMemoryPoolFree, osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize, osMemoryPoolGetCount, osMemoryPoolGetSpaceosMessageQueuePut, osMessageQueueGet, osMessageQueueGetCapacity, osMessageQueueGetMsgSize, osMessageQueueGetCount, osMessageQueueGetSpace

转载请注明原文地址: https://www.6miu.com/read-16761.html

最新回复(0)