- 简述:
- 队列又称消息队列,是一种常用于任务间通信,队列可以在任务与任务间、中断和任务间传递信息;
- 实现了任务接收来自其它任务或者中断的不固定长度的消息
- 当队列中消息为空时,读取消息的任务将被阻塞,可指定阻塞的时间timeout
- 当队列中有消息时,被阻塞的任务会被唤醒并处理新消息
- 等待时间超过指定的阻塞时间,即队列中尚无有效数据,任务也会自动从阻塞态转为就绪态
- 消息队列是一种异步的通信方式
- 特性:
- 读消息队列支持超时机制
- 可以允许不同长度的任意类型数据(引用方式是指针传递而不是值传递,指向数据的指针,表明数据长度的变量和记录消息发布时刻的时间戳,指针指向的可以是一个数据区域或一个函数)
- 一个任务能够从任意一个消息队列接收和发送消息
- 多个任务能够从同一个消息队列接收和发送消息
- 构成:
- 事件控制块
- 消息队列
- 消息
- 消息队列函数:
- OS_MsgPoolInit():初始化消息池
- OSQCreate():创建一个消息队列
- OSQDel():删除一个消息队列
- OSQFlush():清空一个消息队列
- OSQPend():等待消息队列
- OSQPendAbort():取消等待消息队列
- OSQPost():向消息队列发送一条消息
- 常用函数:创建、发送、等待接收这三个函数;
- 实现例程:
- 创建消息队列:
//创建消息队列 OSQCreate((OS_Q *)&queue,
- 创建消息队列:
【4】uC/OS-III应用开发————>消息队列(STM32F767)
最新推荐文章于 2024-03-19 23:21:11 发布

最低0.47元/天 解锁文章
6535

被折叠的 条评论
为什么被折叠?



