uc/os-II 分析(10)--消息队列
来源:互联网 发布:调音软件哪个好 编辑:程序博客网 时间:2024/05/16 01:41
消息队列在任务间可以传递多条消息,由3部分组成:事件控制块、消息队列和消息、
OSEventType=OS_EVENT_TYPE_Q时,描述的就是消息队列。
1.消息指针数组
消息队列的核心iushi消息指针数组。
OSQSize: 数组的长度;
OSQEnter:已存放消息指针的元素数目;
OSQStart: 指针,指向消息指针的起始数组;
OSQEnd:指针,指向消息指针数组结束单元的下一个单元,它使得数组构成了一个循环的缓冲区;
OSQIn:指针,指向插入下一条消息的位置,当它移动到OSQEnd相等时,是调整到指向数组的起始单元;
OSQOut:指针,指向被取出消息的位置,当它移动到与OSQEnd相等时,被调整到指向数组的起始单元
2种插入数据方式:
先进先出: OSQIn:插入, OSQOut:输出;
后进先出: OSQOut;
2. 队列控制块
消息指针数组的管理: 消息指针数组的基本参数都记录在一个教队列控制块的结构中;
typedef struct os_q
{
struct os_q *OSQPtr;
void ** OSQStart;
void ** OSQEnd;
void ** OSQIn;
void ** OSQOut;
INT16U OSQSize;
INT16U OSQEntries;
}OS_Q;
3. 创建消息队列
OS_EVENT OSQCreate(
void * *start, //指针数组的地址
INT16U size // 数组长度
);
4. 请求消息队列
为了从消息队列中获取消息。函数原型:
void * OSQPend( OS_EVENT *pevent,
INT16U timeout,
INT8U *err);
返回值: 消息指针;
希望任务无等待地请求一个消息队列,则需要调用OSQAccept(),函数原型:
void OSQAccept( OS_EVENT *pevent);
5. 向消息队列发送消息
OSQPost():先进先出; OSQPostFront():后进先出‘
INT8U OSQPost(OS_EVENT *pevnet, void *msg);
INT8U OSQPostFront( OS_EVENT *pevent, void *msg)
任务希望以广播的方式通过消息队列发送消息:函数原型:
INT8U OSQPostOpt(OS_EVENT *pevent, void *msg, INT8U opt);
6.清空消息队列
INT8U OSQFlush( OS_EVENT *pevent);
7. 删除消息队列
OS_EVENT *OSQDel( OS_EVENT *pevent);
8. 查询消息队列
INT8U OSQQuery(OS_EVENT *pevent, OS_Q_DATA *pdata);
pdata:c存放状态信息的结构;
typedef struct {
void *OSMsg;
INT16U OSNMsgs;
INT16U OSQSize;
INT8U OSEventTbl[OS_EVENT_TBL_SIZE];
INT8U OSEventGrp;
}OS_Q_DATA;
- uc/os-II 分析(10)--消息队列
- uc/os-ii消息队列
- UC/OS II 消息队列
- uC/OS-II学习笔记 消息队列
- uC/OS-II消息队列及操作
- uC/OS-II 学习笔记:消息队列
- UC/OS II消息队列管理实例
- uc/os-II 分析(9)---消息邮箱
- uC/OS-II 学习笔记之:消息队列
- UC/OS-II学习笔记之消息队列使用
- uC/OS-II 函数之消息队列相关函数
- uc/os-ii消息邮箱
- UC/OS II 消息邮箱
- uC/OS-II操作系统分析 (一)
- uC/OS-II操作系统分析 (二)
- uC/OS-II操作系统分析 (三)
- uC/OS-II源码分析(一)
- uC/OS-II源码分析(二)
- 基于社区医疗系统的spring+mybatis架构设计流程----登录
- 嵌入式系统一面观
- 类的继承与派生
- Microsoft JDBC Driver 4.0 for SQL Server下载及安装使用说明
- 树结构练习——判断给定森林中有多少棵树
- uc/os-II 分析(10)--消息队列
- 快速排序
- 101-200
- WSGI:简介
- ActiveMQ高可用架构(zookeeper+levelDB)
- Ubuntu linux中切换到超级用户的方法
- 201-300
- C#中的线程之线程同步
- 写一个宏函数交换一个数字的偶数比特位和奇数比特位