ucos消息队列的使用
一、消息队列的使用
1、需在以下文件中配置如下内容 OS_CFG.H
OS_MAX_QS N 你需要的值 根据需要自己配置
#define OS_Q_EN 1 /* Enable (1) or Disable (0) code generation for QUEUES */
#define OS_Q_ACCEPT_EN 1 /* Include code for OSQAccept() */
#define OS_Q_DEL_EN 1 /* Include code for OSQDel() */
#define OS_Q_FLUSH_EN 1 /* Include code for OSQFlush() */
#define OS_Q_POST_EN 1 /* Include code for OSQPost() */
#define OS_Q_POST_FRONT_EN 1 /* Include code for OSQPostFront() */
#define OS_Q_POST_OPT_EN 1 /* Include code for OSQPostOpt() */
#define OS_Q_QUERY_EN 1 /* Include code for OSQQuery() */
2、建立一个指向消息数组的指针和数组的大小,该指针数组必须申明为void类型, 如下:
void *MyArrayOfMsg[SIZE];
3、声明一个OS_EVENT类型的指针指向生成的队列,如下: OS_EVENT *QSem;
4、调用OSQcreate()函数创建消息队列,如下:
QSem = OSQcreate(&MyArrayOfMsg[0],SIZE);
5、等待消息队列中的消息,OSQPend()。void *OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err): 必须保证消息队列已经被建立。
timeout定义的是等待超时时间,如果为0则表示无期限的等待 err表示的是在等待消息队列出错时的返回类型,有以下几种: OS_ERR_PEVENT_NULL //消息队列不存在 OS_ERR_EVENT_TYPE
OS_TIMEOUT //消息队列等待超时
OS_NO_ERR //消息队列接收到消息
获得消息队列示例 type *GETQ; INT8U err;
GETQ = (type *)OSQPend(QSem, time, &err);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库UCOS消息队列的使用在线全文阅读。
相关推荐: