【UCOS-ii】OSQPend等待消息队列中的消息

/**************************************************************************
								在队列中等待消息
*参数:	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函数


版权声明:本文为qq_44708426原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。