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 :等待的超时时间,单位是毫秒。

相关推荐

  1. 作业2.11

    2024-01-17 16:40:01       30 阅读
  2. 作业2024/2/15

    2024-01-17 16:40:01       27 阅读
  3. 作业2.15

    2024-01-17 16:40:01       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-17 16:40:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 16:40:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 16:40:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 16:40:01       20 阅读

热门阅读

  1. uniapp导航栏组件如何使用

    2024-01-17 16:40:01       32 阅读
  2. C++中的面向对象设计模式实践

    2024-01-17 16:40:01       32 阅读
  3. Spring整理-Spring框架中用了哪些设计模式

    2024-01-17 16:40:01       34 阅读
  4. Centos常用命令整理,常用的比较全了

    2024-01-17 16:40:01       30 阅读
  5. MyISAM 和 InnoDB 如何选择?

    2024-01-17 16:40:01       28 阅读
  6. iTMSTransporter上传ipa文件

    2024-01-17 16:40:01       35 阅读
  7. 设计模式之多线程分工模式--- 生产-消费者模式

    2024-01-17 16:40:01       37 阅读
  8. flink源码分析 - yaml解析

    2024-01-17 16:40:01       26 阅读