μC/OSIII——任务同步和通信(二)

来源:互联网 发布:国外类似知乎的网站 编辑:程序博客网 时间:2024/06/05 02:27

使用情况

任务同时等待多个内核对象,μC/OSIII仅允许任务同时等待多个信号量和多个消息队列,不支持同时等待多个事件标志组或互斥信号量。

使用方法

当下列情况发生,OSPendMulti()挂起当前任务:

  • 对象变为可用;
  • 到达设定的超时时间;
  • 一个或多个任务被删除或被终止;
  • 一个或多个对象被删除了;

OS_OBJ_QTY  OSPendMulti (OS_PEND_DATA  *p_pend_data_tbl,  指向一个OS_PEND_DATA表的指针
                                                 OS_OBJ_QTY     tbl_size,                    OS_PEND_DATA表的表项数目
                                                 OS_TICK        timeout,                          指定超时值(时钟节拍数)
                                                 OS_OPT         opt,                                
                                                 OS_ERR        *p_err)                            该函数返回的错误码

struct  OS_PEND_DATA{
                                    OS_PEND_DATA        *PrevPtr;
                                    OS_PEND_DATA        *NextPtr;
                                    OS_TCB                      *TCBPtr;
                                    OS_PEND_OBJ          *PendObjPtr;
                                    OS_PEND_OBJ          *RdyObjPtr;
                                    void                             *RdyMsgPtr;
                                    OS_MSG_SIZE           RdyMsgSize;
                                    CPU_TS                      RdyTS;
                                     };

opt  OS_OPT_PEND_BLOCKING  阻塞模式  OS_OPT_PEND_NON_BLOCKING 非阻塞模式


使用实例

实验结果


0 0
原创粉丝点击