/**************************************************************************
在队列中等待消息
*参数: pevent 是一个指向与期望队列关联的事件控制块的指针
* timeout 是一个可选的超时时间(以时钟周期为单位)。 如果非零,任务将等待消息到达队列,等待时间为该参数指定的时间。 但是,如果指定0,则任务将在指定的队列上永远等待,直到消息到达。
* perr 指向将存储错误消息的位置指针,可能的错误消息包括:
* OS_ERR_NONE 通话成功,队列将收到一条消息
* OS_ERR_TIMEOUT 没有在指定的超时时间内收到消息
* OS_ERR_PEND_ABORT 等待被终止
* OS_ERR_EVENT_TYPE 你没有向队列传递指针
* OS_ERR_PEVENT_NULL 参数pevent是个空指针
* OS_ERR_PEND_ISR 如果从ISR调用这个函数,结果将导致暂停
* OS_ERR_PEND_LOCKED 如果使用调度器调用此函数,则锁定
*返回值: != (void *)0 是一个指向接收到的消息的指针
== (void *)0 接收到一个NULL指针
没有收到消息
pevent参数是个空指针
没有传递给指向队列的指针
**************************************************************************/
void *OSQPend (OS_EVENT *pevent, INT32U timeout, INT8U *perr)
{
}
如果消息队列中没有消息,OSQPend函数检查它的调用者是否是中断服务子程序,消息队列中没有消息就不能在中断服务子程序中调用OSQPend,因为中断服务子程序是不能等待的。
如果消息队列中有消息,则可以从中断服务子程序中调用OSQPend函数