【翻译CMSIS_RTOS2 API v2】鸿蒙CMSIS-RTOS2接口之信号量
RTOS2接口信号量的函数以及常见问题
·
文章目录
鸿蒙在CMSIS-RTOS2接口中封装了LiteOS-M的内核代码。因此当需要使用CMSIS-RTOS2接口时,只需要调用相应接口就行了。本篇文章将会记录官网API的使用方法以及使用案例,记录自己学习的想法和使用技巧会保持持续更新哟!!!
CMSIS-RTOS API v2
接口顺序将会按照小熊派官网视频讲解的顺序记录以便自己学习和使用。
信号量
外文名称:Semaphores
源接口地址:Semaphores
HarmonyOS_PPT:HarmonyOS内核开发-信号量.pdf
信号量可以管理共享资源的访问,方便查看资源的使用和规定资源的使用量。
结构体(数据类型)
osSemaphoreAttr_t
所属函数:osSemaphoreNew
| 数据类型 | 属性名称 | 描述 | 默认值 | 备注 |
|---|---|---|---|---|
| const char * | name | 信号量名称 | NULL | |
| uint32_t | attr_bits | 保留字段 | 0U | |
| void * | cb_mem | 信号量块指针 | NULL | |
| uint32_t | cb_size | 信号量块指针大小 | 0U |
osSemaphoreId_t
所属函数:[ osSemaphoreAcquire| osSemaphoreRelease | osSemaphoreDelete | osSemaphoreGetName| osSemaphoreGetCount]
所属函数返回值:osSemaphoreNew
信号量ID,即信号量唯一标识符
功能(函数)
osSemaphoreNew:新建信号量
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| max_count | uint32_t | 最大可用tokens |
| initial_count | uint32_t | 初始可用tokens |
| attr | const osSemaphoreAttr_t | 信号量的属性 |
| 返回值 | osSemaphoreId_t | 信号量ID |
用于管理对共享资源的访问。
注意事项
- 信号量只有在使用 osSemaphoreNew后,才能被调用
- 可以在RTOS开始前进行调用
- 出错返回NULL
osSemaphoreAcquire:获取信号量
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID |
| timeout | uint32_t | 指定信号量超时值,默认值为 0U |
| 返回值 | osStatus_t | 操作结果 |
osStatus_t
| 参数名称 | 描述 |
|---|---|
| osOK | 操作成功 |
| osErrorParameter | 信号量ID为NULL或无效 |
| osErrorResource | 无效状态 |
| osErrorTimeout | 给定时间内没有取得token |
osSemaphoreRelease:释放信号量
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID |
| 返回值 | osStatus_t | 操作结果 |
osStatus_t
| 参数名称 | 描述 |
|---|---|
| osOK | 操作成功 |
| osErrorParameter | 信号量ID为NULL或无效 |
| osErrorResource | 无效状态 |
osSemaphoreDelete:删除信号量
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID |
| 返回值 | osStatus_t | 操作结果 |
osStatus_t
| 参数名称 | 描述 |
|---|---|
| osOK | 操作成功 |
| osErrorParameter | 信号量ID为NULL或无效 |
| osErrorResource | 无效状态 |
| osErrorISR | 不能被终止 |
osSemaphoreGetName:获取信号量名称
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID |
| 返回值 | const char * | 信号量名称,默认值为 " " |
注意事项
- 出错返回NULL
osSemaphoreGetCount:可用token的数量
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
| semaphore_id | osSemaphoreId_t | 信号量ID |
| 返回值 | uint32_t |
注意事项
- 出错返回0
更多推荐

所有评论(0)