os2
os2 提供符合 CMSIS RTOS2 标准的实时操作系统内核接口,支持线程管理、定时器、事件标志、互斥锁、信号量和消息队列等功能。
头文件清单
接口清单
Functions
osKernelInitialize
头文件清单
功能说明
- 初始化操作系统内核,为内核调度器的启动做准备
前置条件
- 调用时序约束:必须在osKernelStart()之前调用
- 调用上下文约束:不可在中断服务例程(ISR)中调用
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 内核初始化完成 |
| osError | 未指定的错误 | 内核状态不为osKernelInactive时调用 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osKernelGetInfo
头文件清单
功能说明
- 获取系统版本信息,包括API版本和内核版本
- version字段填充API版本和内核版本信息,id_buf字段填充内核标识字符串
- 可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| version | osVersion_t * | 指向用于接收版本信息的缓冲区 | 非NULL指针 |
| id_buf | char * | 指向用于接收内核标识字符串的缓冲区 | 非NULL指针 |
| id_size | uint32_t | 内核标识字符串缓冲区大小(字节) | 大于0 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| version | osVersion_t * | 填充API版本和内核版本信息 |
| id_buf | char * | 填充内核标识字符串 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 成功获取内核信息 |
| osError | 未指定的错误 | version或id_buf为NULL,或id_size为0 |
osKernelGetState
头文件清单
功能说明
- 获取系统状态,返回当前内核的运行状态
- 可在中断服务例程(ISR)中调用
- 返回值指示内核当前所处的状态
返回值
返回类型:osKernelState_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osKernelInactive | 内核未激活 | 内核尚未初始化 |
| osKernelReady | 内核就绪 | 内核已初始化,等待启动 |
| osKernelRunning | 内核运行中 | 内核调度器正在运行 |
| osKernelLocked | 内核已锁定 | 内核调度器已被锁定 |
| osKernelSuspended | 内核已挂起 | 内核调度器已被挂起 |
| osKernelError | 内核错误 | 内核处于错误状态 |
osKernelStart
头文件清单
功能说明
- 启动操作系统,开始内核调度
前置条件
- 调用时序约束:必须在osKernelInitialize()成功返回后调用
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 内核必须已初始化(处于osKernelReady状态)
- 至少已创建一个用户线程
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 内核调度器启动成功 |
| osError | 未指定的错误 | 内核状态不为osKernelReady时调用 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osKernelLock
头文件清单
功能说明
- 锁内核(锁调度),禁止线程切换
- 支持嵌套锁定,与osKernelUnlock和osKernelRestoreLock配合使用
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 内核必须已启动(处于osKernelRunning状态)
- 调用线程必须在非ISR上下文中执行
返回值
返回类型:int32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 之前未锁定 | 调用前调度器未被锁定 |
| 1 | 之前已锁定 | 调用前调度器已被锁定 |
| osErrorISR | 负值,不允许在ISR中调用 | 在中断服务例程中调用 |
| osError | 负值,未指定的错误 | 内核未启动时调用 |
osKernelUnlock
头文件清单
功能说明
- 解锁内核(解锁调度),恢复线程切换
- 支持嵌套解锁,与osKernelLock和osKernelRestoreLock配合使用
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 内核必须已启动(处于osKernelRunning状态)
- 调用线程必须在非ISR上下文中执行
返回值
返回类型:int32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 之前未锁定 | 调用前调度器未被锁定 |
| 1 | 之前已锁定 | 调用前调度器已被锁定 |
| osErrorISR | 负值,不允许在ISR中调用 | 在中断服务例程中调用 |
| osError | 负值,未指定的错误 | 内核未启动时调用 |
osKernelRestoreLock
头文件清单
功能说明
- 恢复内核锁状态到指定值
- 通常与osKernelLock/osKernelUnlock配合使用,用于实现临界区保护
- lock参数由之前osKernelLock或osKernelUnlock的返回值获得
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 内核必须已启动(处于osKernelRunning状态)
- 调用线程必须在非ISR上下文中执行
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| lock | int32_t | 要恢复的锁定状态 | 0=解锁,1=锁定 |
返回值
返回类型:int32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 当前未锁定 | 恢复后调度器处于解锁状态 |
| 1 | 当前已锁定 | 恢复后调度器处于锁定状态 |
| osErrorISR | 负值,不允许在ISR中调用 | 在中断服务例程中调用 |
| osError | 负值,未指定的错误 | 内核未启动时调用 |
osKernelGetTickCount
头文件清单
功能说明
- 获取系统启动后时间(单位:tick)
- tick计数从内核启动后递增,用于时间相关计算
- 可在中断服务例程(ISR)中调用
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| tick计数值 | 内核当前tick计数 | 成功获取当前tick计数 |
osKernelGetTickFreq
头文件清单
功能说明
- 获取每秒的tick数,返回值单位为Hz
- 可在中断服务例程(ISR)中调用
- 用于将tick计数转换为实际时间
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 频率值 | 内核tick频率(Hz) | 成功获取tick频率 |
osKernelGetSysTimerCount
头文件清单
功能说明
- 获取系统启动后时间(单位:cycle),返回系统定时器当前计数值
- 与osKernelGetSysTimerFreq配合可计算精确时间
- 可用于高精度时间测量
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 定时器计数值 | 系统定时器当前计数(低32位) | 成功获取系统定时器计数 |
osKernelGetSysTimerFreq
头文件清单
功能说明
- 获取每秒的CPU cycle数,返回值单位为Hz
- 与osKernelGetSysTimerCount配合可计算精确时间
- 可在中断服务例程(ISR)中调用
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 频率值 | 系统定时器频率(Hz) | 成功获取系统定时器频率 |
osThreadNew
头文件清单
功能说明
- 创建任务,将新线程添加到活跃线程列表中
- func参数不可为NULL,attr为NULL时使用默认属性
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| func | osThreadFunc_t | 线程入口函数指针 | 非NULL |
| argument | void * | 传递给线程函数的启动参数 | 可为NULL |
| attr | const osThreadAttr_t * | 线程属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osThreadId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 线程ID | non-NULL | 任务创建成功 |
| NULL | 创建失败 | 参数无效或资源不足 |
osThreadJoin
头文件清单
功能说明
- 等待指定的任务并回收任务资源
- 目标线程必须具有osThreadJoinable属性
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 依赖关系:需要开启内核LOSCFG_TASK_JOINABLE配置
- 内核已启动且调度器正常运行
- 目标线程创建时需设置osThreadJoinable属性
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 目标线程已终止并回收资源 |
| osErrorParameter | 参数无效 | thread_id为NULL或无效 |
| osErrorResource | 资源错误 | 目标线程不具备joinable属性 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| LOSCFG_TASK_JOINABLE | 功能宏 | 需要开启 | - |
osThreadDetach
头文件清单
功能说明
- 设置任务为detached属性,使线程终止后自动回收资源
- 一旦设置为detached,该线程不能再被osThreadJoin等待
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
- 依赖关系:需要开启内核LOSCFG_TASK_JOINABLE配置
- 内核已启动且调度器正常运行
- 目标线程创建时需设置osThreadJoinable属性
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 线程已设置为detached属性 |
| osErrorParameter | 参数无效 | thread_id为NULL或无效 |
| osErrorResource | 资源错误 | 目标线程不具备joinable属性 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| LOSCFG_TASK_JOINABLE | 功能宏 | 需要开启 | - |
osThreadGetName
头文件清单
功能说明
- 获取任务名,返回指定线程的名称字符串
- 可在中断服务例程(ISR)中调用
- 返回名称字符串或NULL(线程无名称或参数无效时)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取 |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 名称字符串 | 线程名称 | 成功获取线程名 |
| NULL | 无名称或无效 | thread_id无效或线程未设置名称 |
osThreadGetId
头文件清单
功能说明
- 获取任务句柄,返回当前正在运行的线程ID
- 可在中断服务例程(ISR)中调用
- 无运行线程或错误时返回NULL
返回值
返回类型:osThreadId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 线程ID | 当前线程标识 | 成功获取当前线程ID |
| NULL | 无运行线程或错误 | 无运行线程或出错 |
osThreadGetState
头文件清单
功能说明
- 获取任务状态,返回指定线程的当前运行状态
- 返回线程状态枚举值
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:osThreadState_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osThreadInactive | 未激活 | 线程未激活 |
| osThreadReady | 就绪 | 线程就绪等待调度 |
| osThreadRunning | 运行中 | 线程正在运行 |
| osThreadBlocked | 阻塞 | 线程被阻塞 |
| osThreadTerminated | 已终止 | 线程已终止 |
| osThreadError | 错误 | 线程错误或参数无效 |
osThreadGetStackSize
头文件清单
功能说明
- 获取任务栈大小(字节)
- 返回栈大小或0(失败时)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 栈大小 | 字节数 | 成功获取栈大小 |
| 0 | 失败 | thread_id无效 |
osThreadGetStackSpace
头文件清单
功能说明
- 获取未使用过的任务栈空间(字节),基于水印记录
- 返回剩余栈空间或0(失败时)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 剩余栈空间 | 字节数 | 成功获取未使用栈空间 |
| 0 | 失败 | thread_id无效 |
osThreadSetPriority
头文件清单
功能说明
- 设置任务优先级,修改指定线程的调度优先级
- 优先级必须在有效范围内
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
| priority | osPriority_t | 新优先级值 | 有效优先级范围内 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 优先级设置成功 |
| osErrorParameter | 参数无效 | thread_id为NULL或priority无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osThreadGetPriority
头文件清单
功能说明
- 获取任务优先级,返回指定线程的当前优先级
- 返回优先级枚举值或osPriorityError(失败时)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:osPriority_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 优先级值 | 线程当前优先级 | 成功获取优先级 |
| osPriorityError | 错误 | thread_id无效或在ISR中调用 |
osThreadYield
头文件清单
功能说明
- 切换至同优先级的就绪任务,让出CPU给同优先级的其他就绪线程
- 若无同优先级就绪线程则继续运行当前线程
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 成功让出CPU |
| osError | 未指定的错误 | 内核未运行时调用 |
osThreadSuspend
头文件清单
功能说明
- 挂起任务(恢复前无法得到调度),将指定线程置于挂起状态
- 被挂起的线程需要通过osThreadResume恢复才能继续调度
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 线程已挂起 |
| osErrorParameter | 参数无效 | thread_id为NULL或无效 |
| osErrorResource | 资源错误 | 线程状态不允许挂起 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osThreadResume
头文件清单
功能说明
- 恢复任务,将挂起的线程恢复为就绪状态
- 目标线程必须处于挂起状态
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 线程已恢复 |
| osErrorParameter | 参数无效 | thread_id为NULL或无效 |
| osErrorResource | 资源错误 | 线程未处于挂起状态 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osThreadTerminate
头文件清单
功能说明
- 终止任务,建议不要主动终止任务
- 终止任务可能导致资源未正确释放
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 线程已终止 |
| osErrorParameter | 参数无效 | thread_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osThreadGetCount
头文件清单
功能说明
- 获取已创建的任务数量,返回活跃线程的数量
- 返回值为当前系统中活跃线程的总数
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 线程数量 | 活跃线程数 | 成功获取线程数量 |
| 0 | 无活跃线程或错误 | 无活跃线程或调用失败 |
osThreadFlagsSet
头文件清单
功能说明
- 写入指定事件,为指定线程设置线程标志
- 可在中断服务例程(ISR)中调用
- flags参数的每一位代表一个事件标志
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| thread_id | osThreadId_t | 目标线程ID | 由osThreadNew或osThreadGetId获取,非NULL |
| flags | uint32_t | 要设置的事件标志位 | 位掩码,bit0~bit30有效,bit31保留 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 设置后的标志值 | 操作成功 | 成功设置线程标志 |
| osFlagsErrorParameter | 参数错误 | thread_id为NULL或flags最高位为1 |
| osFlagsErrorISR | ISR中调用错误 | 不允许在ISR中调用(特定实现限制) |
osThreadFlagsClear
头文件清单
功能说明
- 清除指定事件,清除当前线程的线程标志
- flags参数指定要清除的标志位
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| flags | uint32_t | 要清除的事件标志位 | 位掩码,bit0~bit30有效,bit31保留 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 清除前的标志值 | 操作成功 | 成功清除线程标志 |
| osFlagsErrorParameter | 参数错误 | flags最高位为1 |
| osFlagsErrorISR | ISR中调用错误 | 在中断服务例程中调用 |
osThreadFlagsGet
头文件清单
功能说明
- 获取当前任务事件,返回当前线程的事件标志值
- 返回值为当前线程所有标志位的当前状态
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 标志值 | 当前线程事件标志 | 成功获取标志 |
| osFlagsErrorISR | ISR中调用错误 | 在中断服务例程中调用 |
osThreadFlagsWait
头文件清单
功能说明
- 等待指定事件,阻塞当前线程直到指定的线程标志被设置
- options参数指定等待模式(任意标志/全部标志/是否清除)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| flags | uint32_t | 等待的事件标志位 | 位掩码,bit0~bit30有效 |
| options | uint32_t | 等待选项 | osFlagsWaitAny/osFlagsWaitAll可组合osFlagsNoClear |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 满足条件的标志值 | 操作成功 | 等待到指定事件 |
| osFlagsErrorTimeout | 超时 | 在指定时间内未等到事件 |
| osFlagsErrorParameter | 参数错误 | flags为0或options无效 |
| osFlagsErrorISR | ISR中调用错误 | 在中断服务例程中调用 |
osDelay
头文件清单
功能说明
- 任务延时(单位:tick),将当前线程挂起指定tick数
- 延时时间从调用时刻开始计算
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ticks | uint32_t | 延时的tick数 | 大于0 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 延时时间到期 |
| osErrorParameter | 参数无效 | ticks为0 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osDelayUntil
头文件清单
功能说明
- 延时至某一时刻(单位:tick),阻塞当前线程直到指定的绝对tick时刻
- 与osDelay不同,此函数延时到绝对时刻而非相对时间
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ticks | uint32_t | 目标绝对tick时刻 | 由osKernelGetTickCount获取的值 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 到达指定时刻 |
| osErrorParameter | 参数无效 | ticks已过期 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osTimerNew
osTimerId_t osTimerNew(osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
头文件清单
功能说明
- 创建定时器,初始化并返回定时器ID
- func参数不可为NULL,type指定定时器类型(单次或周期)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| func | osTimerFunc_t | 定时器回调函数指针 | 非NULL |
| type | osTimerType_t | 定时器类型 | osTimerOnce或osTimerPeriodic |
| argument | void * | 传递给回调函数的参数 | 可为NULL |
| attr | const osTimerAttr_t * | 定时器属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osTimerId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 定时器ID | non-NULL | 定时器创建成功 |
| NULL | 创建失败 | 参数无效或资源不足 |
osTimerGetName
头文件清单
功能说明
- 获取定时器名称(目前固定返回NULL)
- 可在中断服务例程(ISR)中调用
- 返回定时器名称字符串或NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| timer_id | osTimerId_t | 定时器ID | 由osTimerNew返回,非NULL |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 当前实现固定返回NULL | 当前不支持定时器名称 |
osTimerStart
头文件清单
功能说明
- 启动定时器(若定时器正在计时会先停止该定时器)
- ticks参数指定定时器超时时间
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| timer_id | osTimerId_t | 定时器ID | 由osTimerNew返回,非NULL |
| ticks | uint32_t | 定时器超时时间(tick) | 大于0 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 定时器启动成功 |
| osErrorParameter | 参数无效 | timer_id为NULL或ticks为0 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osTimerStop
头文件清单
功能说明
- 停止定时器,停止正在运行的定时器
- 仅对正在运行的定时器有效
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| timer_id | osTimerId_t | 定时器ID | 由osTimerNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 定时器停止成功 |
| osErrorParameter | 参数无效 | timer_id为NULL或无效 |
| osErrorResource | 资源错误 | 定时器未在运行 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osTimerIsRunning
头文件清单
功能说明
- 定时器是否在计时中,检查指定定时器是否正在运行
- 返回1表示正在运行,0表示未运行
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| timer_id | osTimerId_t | 定时器ID | 由osTimerNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 1 | 定时器正在运行 | 定时器处于计时状态 |
| 0 | 定时器未运行 | 定时器未启动或已停止 |
osTimerDelete
头文件清单
功能说明
- 删除定时器,释放定时器占用的资源
- 删除后定时器ID不可再使用
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| timer_id | osTimerId_t | 定时器ID | 由osTimerNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 定时器删除成功 |
| osErrorParameter | 参数无效 | timer_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osEventFlagsNew
头文件清单
功能说明
- 创建事件(与任务事件ThreadFlags的差别在于有独立的句柄和控制块)
- attr为NULL时使用默认属性
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| attr | const osEventFlagsAttr_t * | 事件标志属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osEventFlagsId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 事件标志ID | non-NULL | 事件创建成功 |
| NULL | 创建失败 | 资源不足或参数无效 |
osEventFlagsGetName
头文件清单
功能说明
- 获取事件名称(目前固定返回NULL)
- 可在中断服务例程(ISR)中调用
- 返回事件标志名称字符串或NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 当前实现固定返回NULL | 当前不支持事件标志名称 |
osEventFlagsSet
头文件清单
功能说明
- 写入指定事件,设置事件标志对象中指定的事件标志位
- 可在中断服务例程(ISR)中调用
- flags参数的每一位代表一个事件标志
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
| flags | uint32_t | 要设置的事件标志位 | 位掩码,bit0~bit30有效,bit31保留 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 设置后的标志值 | 操作成功 | 成功设置事件标志 |
| osFlagsErrorParameter | 参数错误 | ef_id为NULL或flags最高位为1 |
| osFlagsErrorISR | ISR中调用错误 | 不允许在ISR中调用(特定实现限制) |
osEventFlagsClear
头文件清单
功能说明
- 清除指定事件,清除事件标志对象中指定的事件标志位
- 可在中断服务例程(ISR)中调用
- flags参数指定要清除的标志位
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
| flags | uint32_t | 要清除的事件标志位 | 位掩码,bit0~bit30有效,bit31保留 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 清除前的标志值 | 操作成功 | 成功清除事件标志 |
| osFlagsErrorParameter | 参数错误 | ef_id为NULL或flags最高位为1 |
| osFlagsErrorISR | ISR中调用错误 | 不允许在ISR中调用(特定实现限制) |
osEventFlagsGet
头文件清单
功能说明
- 获取当前事件值,返回事件标志对象的当前标志值
- 可在中断服务例程(ISR)中调用
- 返回所有标志位的当前状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 标志值 | 当前事件标志值 | 成功获取标志 |
| osFlagsErrorParameter | 参数错误 | ef_id为NULL |
| osFlagsErrorISR | ISR中调用错误 | 不允许在ISR中调用(特定实现限制) |
osEventFlagsWait
uint32_t osEventFlagsWait(osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
头文件清单
功能说明
- 等待指定事件,阻塞当前线程直到指定的事件标志被设置
- options参数指定等待模式(任意标志/全部标志/是否清除)
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
| flags | uint32_t | 等待的事件标志位 | 位掩码,bit0~bit30有效 |
| options | uint32_t | 等待选项 | osFlagsWaitAny/osFlagsWaitAll可组合osFlagsNoClear |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 满足条件的标志值 | 操作成功 | 等待到指定事件 |
| osFlagsErrorTimeout | 超时 | 在指定时间内未等到事件 |
| osFlagsErrorParameter | 参数错误 | flags为0或options无效 |
| osFlagsErrorISR | ISR中调用错误 | 在中断服务例程中调用 |
osEventFlagsDelete
头文件清单
功能说明
- 删除事件,释放事件标志对象占用的资源
- 删除后事件标志ID不可再使用,等待该事件的线程将被唤醒
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ef_id | osEventFlagsId_t | 事件标志ID | 由osEventFlagsNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 事件标志删除成功 |
| osErrorParameter | 参数无效 | ef_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMutexNew
头文件清单
功能说明
- 创建互斥锁,初始化并返回互斥锁ID
- attr为NULL时使用默认属性
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| attr | const osMutexAttr_t * | 互斥锁属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osMutexId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 互斥锁ID | non-NULL | 互斥锁创建成功 |
| NULL | 创建失败 | 资源不足或参数无效 |
osMutexGetName
头文件清单
功能说明
- 获取互斥锁名称(目前固定返回NULL)
- 可在中断服务例程(ISR)中调用
- 返回互斥锁名称字符串或NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mutex_id | osMutexId_t | 互斥锁ID | 由osMutexNew返回,非NULL |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 当前实现固定返回NULL | 当前不支持互斥锁名称 |
osMutexAcquire
头文件清单
功能说明
- 获取互斥锁(阻塞等待),若互斥锁被其他线程持有则阻塞等待
- timeout为0时不等待,osWaitForever表示永久等待
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mutex_id | osMutexId_t | 互斥锁ID | 由osMutexNew返回,非NULL |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 成功获取互斥锁 |
| osErrorTimeout | 超时 | 在指定时间内未获取到互斥锁 |
| osErrorParameter | 参数无效 | mutex_id为NULL或无效 |
| osErrorResource | 资源错误 | mutex_id无效(非超时场景) |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMutexRelease
头文件清单
功能说明
- 释放互斥锁,释放当前线程持有的互斥锁
- 释放互斥锁的线程必须是该互斥锁的持有者
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mutex_id | osMutexId_t | 互斥锁ID | 由osMutexNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 互斥锁释放成功 |
| osErrorParameter | 参数无效 | mutex_id为NULL或无效 |
| osErrorResource | 资源错误 | 当前线程非互斥锁持有者 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMutexGetOwner
头文件清单
功能说明
- 获取持有该互斥锁的任务句柄
- 可在中断服务例程(ISR)中调用
- 返回持有互斥锁的线程ID或NULL(互斥锁未被持有)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mutex_id | osMutexId_t | 互斥锁ID | 由osMutexNew返回,非NULL |
返回值
返回类型:osThreadId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 线程ID | 互斥锁持有者 | 互斥锁被某线程持有 |
| NULL | 无持有者 | 互斥锁未被任何线程持有或mutex_id无效 |
osMutexDelete
头文件清单
功能说明
- 删除互斥锁,释放互斥锁占用的资源
- 删除后互斥锁ID不可再使用,等待该互斥锁的线程将被唤醒
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mutex_id | osMutexId_t | 互斥锁ID | 由osMutexNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 互斥锁删除成功 |
| osErrorParameter | 参数无效 | mutex_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osSemaphoreNew
osSemaphoreId_t osSemaphoreNew(uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
头文件清单
功能说明
- 创建信号量,初始化并返回信号量ID
- max_count为1时创建二值信号量,大于1时创建计数信号量
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| max_count | uint32_t | 信号量最大计数值 | 大于0 |
| initial_count | uint32_t | 信号量初始计数值 | 0~max_count |
| attr | const osSemaphoreAttr_t * | 信号量属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osSemaphoreId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 信号量ID | non-NULL | 信号量创建成功 |
| NULL | 创建失败 | 参数无效或资源不足 |
osSemaphoreGetName
头文件清单
功能说明
- 获取信号量名称(目前固定返回NULL)
- 可在中断服务例程(ISR)中调用
- 返回信号量名称字符串或NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID | 由osSemaphoreNew返回,非NULL |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 当前实现固定返回NULL | 当前不支持信号量名称 |
osSemaphoreAcquire
头文件清单
功能说明
- 获取信号量(阻塞等待),若信号量计数为0则阻塞等待
- timeout为0时不等待,osWaitForever表示永久等待
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID | 由osSemaphoreNew返回,非NULL |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 成功获取信号量 |
| osErrorTimeout | 超时 | 在指定时间内未获取到信号量 |
| osErrorParameter | 参数无效 | semaphore_id为NULL或无效 |
| osErrorResource | 资源错误 | semaphore_id无效(非超时场景) |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osSemaphoreRelease
头文件清单
功能说明
- 释放信号量,将信号量计数加1
- 可在中断服务例程(ISR)中调用
- 释放后若有等待该信号量的线程将被唤醒
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID | 由osSemaphoreNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 信号量释放成功 |
| osErrorParameter | 参数无效 | semaphore_id为NULL或无效 |
| osErrorResource | 资源错误 | 信号量计数已达最大值 |
osSemaphoreGetCount
头文件清单
功能说明
- 获取信号量的计数值,返回当前信号量的可用令牌数
- 可在中断服务例程(ISR)中调用
- 返回值为当前信号量中可用的令牌数量
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID | 由osSemaphoreNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 计数值 | 当前可用令牌数 | 成功获取计数值 |
| 0 | 无可用令牌或错误 | 信号量计数为0或semaphore_id无效 |
osSemaphoreDelete
头文件清单
功能说明
- 删除信号量,释放信号量占用的资源
- 删除后信号量ID不可再使用,等待该信号量的线程将被唤醒
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID | 由osSemaphoreNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 信号量删除成功 |
| osErrorParameter | 参数无效 | semaphore_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMessageQueueNew
osMessageQueueId_t osMessageQueueNew(uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
头文件清单
功能说明
- 创建消息队列,初始化并返回消息队列ID
- msg_count指定消息队列最大消息数,msg_size指定每条消息的大小
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| msg_count | uint32_t | 消息队列最大消息数 | 大于0 |
| msg_size | uint32_t | 每条消息的大小(字节) | 大于0 |
| attr | const osMessageQueueAttr_t * | 消息队列属性,NULL使用默认值 | 可为NULL |
返回值
返回类型:osMessageQueueId_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 消息队列ID | non-NULL | 消息队列创建成功 |
| NULL | 创建失败 | 参数无效或资源不足 |
osMessageQueueGetName
头文件清单
功能说明
- 获取消息队列名称(目前固定返回NULL)
- 可在中断服务例程(ISR)中调用
- 返回消息队列名称字符串或NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:const char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 当前实现固定返回NULL | 当前不支持消息队列名称 |
osMessageQueuePut
osStatus_t osMessageQueuePut(osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
头文件清单
功能说明
- 往消息队列里放入消息
- msg_prio参数为消息优先级,当前实现未使用优先级
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用(timeout=0时可在ISR中调用)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
| msg_ptr | const void * | 指向要发送的消息缓冲区 | 非NULL |
| msg_prio | uint8_t | 消息优先级 | 0=默认优先级 |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 消息放入成功 |
| osErrorTimeout | 超时 | 在指定时间内消息队列已满 |
| osErrorParameter | 参数无效 | mq_id或msg_ptr为NULL |
| osErrorResource | 资源错误 | 消息队列已满(非超时场景) |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMessageQueueGet
osStatus_t osMessageQueueGet(osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
头文件清单
功能说明
- 从消息队列里获取消息
- 获取的消息将存入msg_ptr指向的缓冲区
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用(timeout=0时可在ISR中调用)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
| msg_ptr | void * | 指向用于接收消息的缓冲区 | 非NULL |
| msg_prio | uint8_t * | 指向用于接收消息优先级的缓冲区 | 可为NULL |
| timeout | uint32_t | 超时时间(tick) | 0=不等待,osWaitForever=永久等待 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| msg_ptr | void * | 接收到的消息内容 |
| msg_prio | uint8_t * | 接收到的消息优先级 |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 消息获取成功 |
| osErrorTimeout | 超时 | 在指定时间内消息队列为空 |
| osErrorParameter | 参数无效 | mq_id或msg_ptr为NULL |
| osErrorResource | 资源错误 | 消息队列为空(非超时场景) |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
osMessageQueueGetCapacity
头文件清单
功能说明
- 获取消息队列节点数量,即消息队列的最大消息数
- 可在中断服务例程(ISR)中调用
- 返回消息队列的最大容量或0(失败时)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 容量值 | 消息队列最大消息数 | 成功获取容量 |
| 0 | 失败 | mq_id无效 |
osMessageQueueGetMsgSize
头文件清单
功能说明
- 获取消息队列节点大小,即每条消息的字节大小
- 可在中断服务例程(ISR)中调用
- 返回每条消息的大小或0(失败时)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 消息大小 | 每条消息的字节数 | 成功获取消息大小 |
| 0 | 失败 | mq_id无效 |
osMessageQueueGetCount
头文件清单
功能说明
- 获取当前消息队列里的消息数量
- 可在中断服务例程(ISR)中调用
- 返回当前队列中的消息数或0(失败时)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 消息数量 | 当前队列中的消息数 | 成功获取消息数量 |
| 0 | 失败 | mq_id无效 |
osMessageQueueGetSpace
头文件清单
功能说明
- 获取当前消息队列里的剩余消息数量
- 可在中断服务例程(ISR)中调用
- 返回队列中剩余可用的消息槽位数或0(失败时)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:uint32_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 剩余槽位 | 剩余可用的消息槽位数 | 成功获取剩余空间 |
| 0 | 失败 | mq_id无效 |
osMessageQueueDelete
头文件清单
功能说明
- 删除消息队列,释放消息队列占用的资源
- 删除后消息队列ID不可再使用,等待该队列的线程将被唤醒
前置条件
- 调用上下文约束:不可在中断服务例程(ISR)中调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| mq_id | osMessageQueueId_t | 消息队列ID | 由osMessageQueueNew返回,非NULL |
返回值
返回类型:osStatus_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| osOK | 操作成功 | 消息队列删除成功 |
| osErrorParameter | 参数无效 | mq_id为NULL或无效 |
| osErrorResource | 资源错误 | 内部操作失败 |
| osErrorISR | 不允许在ISR中调用 | 在中断服务例程中调用 |
Type definitions
osThreadFunc_t
使用说明
线程入口函数类型,指向以void*为参数、无返回值的函数指针
osTimerFunc_t
使用说明
定时器回调函数类型,指向以void*为参数、无返回值的函数指针
osThreadId_t
使用说明
线程ID类型,用于标识和操作线程
osTimerId_t
使用说明
定时器ID类型,用于标识和操作定时器
osEventFlagsId_t
使用说明
事件标志ID类型,用于标识和操作事件标志对象
osMutexId_t
使用说明
互斥锁ID类型,用于标识和操作互斥锁
osSemaphoreId_t
使用说明
信号量ID类型,用于标识和操作信号量
osMessageQueueId_t
使用说明
消息队列ID类型,用于标识和操作消息队列
TZ_ModuleId_t
使用说明
TrustZone模块ID类型,用于线程的TrustZone安全域标识
Enumerations
osKernelState_t
typedef enum {
osKernelInactive = 0,
osKernelReady = 1,
osKernelRunning = 2,
osKernelLocked = 3,
osKernelSuspended = 4,
osKernelError = -1,
osKernelReserved = 0x7FFFFFFF
} osKernelState_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| osKernelInactive | 0 | 内核未激活 |
| osKernelReady | 1 | 内核就绪 |
| osKernelRunning | 2 | 内核运行中 |
| osKernelLocked | 3 | 内核已锁定 |
| osKernelSuspended | 4 | 内核已挂起 |
| osKernelError | -1 (0x80000001) | 内核错误 |
| osKernelReserved | 0x7FFFFFFF | 保留 |
osThreadState_t
typedef enum {
osThreadInactive = 0,
osThreadReady = 1,
osThreadRunning = 2,
osThreadBlocked = 3,
osThreadTerminated = 4,
osThreadError = -1,
osThreadReserved = 0x7FFFFFFF
} osThreadState_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| osThreadInactive | 0 | 线程未激活 |
| osThreadReady | 1 | 线程就绪 |
| osThreadRunning | 2 | 线程运行中 |
| osThreadBlocked | 3 | 线程阻塞 |
| osThreadTerminated | 4 | 线程已终止 |
| osThreadError | -1 (0x80000001) | 线程错误 |
| osThreadReserved | 0x7FFFFFFF | 保留 |
osPriority_t
typedef enum {
osPriorityNone = 0,
osPriorityIdle = 1,
osPriorityLow = 8,
osPriorityLow1 = 8+1,
osPriorityLow2 = 8+2,
osPriorityLow3 = 8+3,
osPriorityLow4 = 8+4,
osPriorityLow5 = 8+5,
osPriorityLow6 = 8+6,
osPriorityLow7 = 8+7,
osPriorityBelowNormal = 16,
osPriorityBelowNormal1 = 16+1,
osPriorityBelowNormal2 = 16+2,
osPriorityBelowNormal3 = 16+3,
osPriorityBelowNormal4 = 16+4,
osPriorityBelowNormal5 = 16+5,
osPriorityBelowNormal6 = 16+6,
osPriorityBelowNormal7 = 16+7,
osPriorityNormal = 24,
osPriorityNormal1 = 24+1,
osPriorityNormal2 = 24+2,
osPriorityNormal3 = 24+3,
osPriorityNormal4 = 24+4,
osPriorityNormal5 = 24+5,
osPriorityNormal6 = 24+6,
osPriorityNormal7 = 24+7,
osPriorityAboveNormal = 32,
osPriorityAboveNormal1 = 32+1,
osPriorityAboveNormal2 = 32+2,
osPriorityAboveNormal3 = 32+3,
osPriorityAboveNormal4 = 32+4,
osPriorityAboveNormal5 = 32+5,
osPriorityAboveNormal6 = 32+6,
osPriorityAboveNormal7 = 32+7,
osPriorityHigh = 40,
osPriorityHigh1 = 40+1,
osPriorityHigh2 = 40+2,
osPriorityHigh3 = 40+3,
osPriorityHigh4 = 40+4,
osPriorityHigh5 = 40+5,
osPriorityHigh6 = 40+6,
osPriorityHigh7 = 40+7,
osPriorityRealtime = 48,
osPriorityRealtime1 = 48+1,
osPriorityRealtime2 = 48+2,
osPriorityRealtime3 = 48+3,
osPriorityRealtime4 = 48+4,
osPriorityRealtime5 = 48+5,
osPriorityRealtime6 = 48+6,
osPriorityRealtime7 = 48+7,
osPriorityISR = 56,
osPriorityError = -1,
osPriorityReserved = 0x7FFFFFFF
} osPriority_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| osPriorityNone | 0 | 无优先级 |
| osPriorityIdle | 1 | 空闲优先级 |
| osPriorityLow | 8 | 低优先级 |
| osPriorityLow1 | 9 | 低优先级+1 |
| osPriorityLow2 | 10 | 低优先级+2 |
| osPriorityLow3 | 11 | 低优先级+3 |
| osPriorityLow4 | 12 | 低优先级+4 |
| osPriorityLow5 | 13 | 低优先级+5 |
| osPriorityLow6 | 14 | 低优先级+6 |
| osPriorityLow7 | 15 | 低优先级+7 |
| osPriorityBelowNormal | 16 | 低于正常优先级 |
| osPriorityBelowNormal1 | 17 | 低于正常优先级+1 |
| osPriorityBelowNormal2 | 18 | 低于正常优先级+2 |
| osPriorityBelowNormal3 | 19 | 低于正常优先级+3 |
| osPriorityBelowNormal4 | 20 | 低于正常优先级+4 |
| osPriorityBelowNormal5 | 21 | 低于正常优先级+5 |
| osPriorityBelowNormal6 | 22 | 低于正常优先级+6 |
| osPriorityBelowNormal7 | 23 | 低于正常优先级+7 |
| osPriorityNormal | 24 | 正常优先级 |
| osPriorityNormal1 | 25 | 正常优先级+1 |
| osPriorityNormal2 | 26 | 正常优先级+2 |
| osPriorityNormal3 | 27 | 正常优先级+3 |
| osPriorityNormal4 | 28 | 正常优先级+4 |
| osPriorityNormal5 | 29 | 正常优先级+5 |
| osPriorityNormal6 | 30 | 正常优先级+6 |
| osPriorityNormal7 | 31 | 正常优先级+7 |
| osPriorityAboveNormal | 32 | 高于正常优先级 |
| osPriorityAboveNormal1 | 33 | 高于正常优先级+1 |
| osPriorityAboveNormal2 | 34 | 高于正常优先级+2 |
| osPriorityAboveNormal3 | 35 | 高于正常优先级+3 |
| osPriorityAboveNormal4 | 36 | 高于正常优先级+4 |
| osPriorityAboveNormal5 | 37 | 高于正常优先级+5 |
| osPriorityAboveNormal6 | 38 | 高于正常优先级+6 |
| osPriorityAboveNormal7 | 39 | 高于正常优先级+7 |
| osPriorityHigh | 40 | 高优先级 |
| osPriorityHigh1 | 41 | 高优先级+1 |
| osPriorityHigh2 | 42 | 高优先级+2 |
| osPriorityHigh3 | 43 | 高优先级+3 |
| osPriorityHigh4 | 44 | 高优先级+4 |
| osPriorityHigh5 | 45 | 高优先级+5 |
| osPriorityHigh6 | 46 | 高优先级+6 |
| osPriorityHigh7 | 47 | 高优先级+7 |
| osPriorityRealtime | 48 | 实时优先级 |
| osPriorityRealtime1 | 49 | 实时优先级+1 |
| osPriorityRealtime2 | 50 | 实时优先级+2 |
| osPriorityRealtime3 | 51 | 实时优先级+3 |
| osPriorityRealtime4 | 52 | 实时优先级+4 |
| osPriorityRealtime5 | 53 | 实时优先级+5 |
| osPriorityRealtime6 | 54 | 实时优先级+6 |
| osPriorityRealtime7 | 55 | 实时优先级+7 |
| osPriorityISR | 56 | ISR优先级 |
| osPriorityError | -1 (0x80000001) | 优先级错误 |
| osPriorityReserved | 0x7FFFFFFF | 保留 |
osTimerType_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| osTimerOnce | 0 | 单次定时器 |
| osTimerPeriodic | 1 | 周期定时器 |
osStatus_t
typedef enum {
osOK = 0,
osError = -1,
osErrorTimeout = -2,
osErrorResource = -3,
osErrorParameter = -4,
osErrorNoMemory = -5,
osErrorISR = -6,
osErrorSafetyClass = -7,
osStatusReserved = 0x7FFFFFFF
} osStatus_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| osOK | 0 | 操作成功 |
| osError | -1 | 未指定的错误 |
| osErrorTimeout | -2 | 超时错误 |
| osErrorResource | -3 | 资源错误 |
| osErrorParameter | -4 | 参数错误 |
| osErrorNoMemory | -5 | 内存不足错误 |
| osErrorISR | -6 | ISR调用错误 |
| osErrorSafetyClass | -7 | 安全类错误 |
| osStatusReserved | 0x7FFFFFFF | 保留 |
Structures
osVersion_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| api | uint32_t | API版本号 |
| kernel | uint32_t | 内核版本号 |
osThreadAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
void *stack_mem;
uint32_t stack_size;
osPriority_t priority;
TZ_ModuleId_t tz_module;
uint32_t affinity_mask;
} osThreadAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 线程名称 |
| attr_bits | uint32_t | 线程属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
| stack_mem | void * | 栈内存地址 |
| stack_size | uint32_t | 栈大小 |
| priority | osPriority_t | 线程优先级 |
| tz_module | TZ_ModuleId_t | TrustZone模块ID |
| affinity_mask | uint32_t | 处理器亲和性掩码 |
osTimerAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
} osTimerAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 定时器名称 |
| attr_bits | uint32_t | 定时器属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
osEventFlagsAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
} osEventFlagsAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 事件标志名称 |
| attr_bits | uint32_t | 事件标志属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
osMutexAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
} osMutexAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 互斥锁名称 |
| attr_bits | uint32_t | 互斥锁属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
osSemaphoreAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
} osSemaphoreAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 信号量名称 |
| attr_bits | uint32_t | 信号量属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
osMessageQueueAttr_t
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
void *mq_mem;
uint32_t mq_size;
} osMessageQueueAttr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | 消息队列名称 |
| attr_bits | uint32_t | 消息队列属性位 |
| cb_mem | void * | 控制块内存地址 |
| cb_size | uint32_t | 控制块内存大小 |
| mq_mem | void * | 消息队列数据区内存地址 |
| mq_size | uint32_t | 消息队列数据区内存大小 |