1.15 作业

使用计数型信号量设计

2,相关函数的API

一、队列:

1,创建队列函数
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size,
const osMessageQueueAttr_t *attr);
msg_count : 队列中消息的最大数量,即队列的最大容量。
msg_size : 单个消息的大小(以字节为单位)。
osMessageQueueAttr_t:队列的属性
2,写队列函数
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr,
uint8_t msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向要发送的消息的指针。
msg_prio : 消息的优先级。
timeout : 超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否写入成功)
3, 读队列函数
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t
*msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向接收消息的指针。
msg_prio : 优先级的指针,可以为 NULL
timeout :超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否读取成功)
二、信号量
1,创建信号量
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count,
const osSemaphoreAttr_t *attr);
max_count :信号量的最大计数。
initial_count :信号量的初始计数。
2,获取信号量
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);
sem_id :信号量的id。
timeout :等待信号量的超时时间。
返回值类型:osStatus_t(判断获取是否成功)
3,释放信号量
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id);
sem_id :信号量的句柄,通过 osSemaphoreNew 返回。
返回值类型:osStatus_t(判断释放是否成功)
三、互斥量
1,创建互斥量
osMutexId_t osMutexNew(const osMutexAttr_t *attr);

attr :互斥量的属性。

2,获取互斥量
osStatus_t osMutexAcquire(osMutexId_t mutex_id, uint32_t timeout);
mutex_id :要获取的互斥量的id。
timeout :超时时间,通常以毫秒为单位。
3, 释放互斥量
osStatus_t osMutexRelease(osMutexId_t mutex_id);
mutex_id :要释放的互斥量的标识符。
四、事件组
1,创建事件组
osEventFlagsId_t osEventFlagsNew(const osEventFlagsAttr_t *attr);
attr :事件标志组的属性。
2,设置事件组
uint32_t osEventFlagsSet(osEventFlagsId_t ef_id, uint32_t flags)
ef_id :事件标志组的id
flags :要设置的事件标志位,可以使用按位或操作符 | 设置多个标志位。
2,等待事件组
uint32_t osEventFlagsWait(osEventFlagsId_t ef_id, uint32_t flags, uint32_t
options, uint32_t timeout);
ef_id :事件标志组的id
flags :要等待的事件标志位,可以使用按位或操作符 | 等待多个标志位。
options :等待标志的个数
timeout :等待的超时时间,单位是毫秒。
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值