UCOSIII-消息队列

目录

1. 简介

1.1消息队列(异步通信方式)

1.2消息池

2.结构体

2.1消息元素os_msg

2.2消息池元素osmsgpool(全局变量)

2.3消息队列结构体OS_Q

2.4消息列表结构体OS_MSG_Q

3.消息队列函数

4.实验

 4.1定义消息队列

 4.2定义函数用于查询消息队列总大小与剩余数量,并显示

4.3创建消息队列

4.4定时器1回调函数-发送消息

4.5主任务的任务函数——发送函数

4.6按键处理任务(按键触发定时器1回调函数)——请求消息

4.7显示消息队列中的消息——请求消息


1. 简介

1.1消息队列(异步通信方式)

任务与任务间中断与任务间传递消息,完成信息的交换

存放不同任务或中断的不固定长度的消息,其他不同的任务能够从消息队列里面读取消息,队列存储的是数据的地址

设定阻塞时间timeout

1. 等待时间在设定的阻塞时间timeout内,若消息队列为空无有效数据,任务将保持阻塞状态以等待队列有有效数据,当队列有有效数据时被阻塞的任务会被唤醒并处理有效数据;

2. 等待时间超过了阻塞时间timeout,若消息队列队列中仍然没有有效数据,任务还是会自动从阻塞态转为就绪态 。

1.2消息池

定义数组 OSCfg_MsgPool[OS_CFG_MSG_POOL_SIZE] ,将该数组的所有元素(消息)串成单向链表,形成一个共用资源。(消息的存取在链表的首尾实现

系统所有消息队列都能从消息池中取出消息挂到自己的队列,消息使用完后放回消息池可继续供其他消息队列调出取用。

2.结构体

2.1消息元素os_msg

NextPtr :指向下一个可用的消息。

MsgPtr:指向实际的消息。

MsgSize:记录消息的大小(以字节为单位)。

MsgTS:记录发送消息时的时间戳

2.2消息池元素osmsgpool(全局变量)

NextPtr :指向下一个可用的消息。

NbrFree :记录消息池中可用的消息个数

NbrUsed:记录已用的消息个数。

NbrUsedMax:记录使用的消息峰值数量。

 消息池中消息的存取

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值