queue.c

来自「基于SPMC75的NNAD_Flash K9F1208的驱动程式序,对一些需要存」· C语言 代码 · 共 88 行

C
88
字号
//===========================================================================//
//
//===========================================================================//
#include "Queue.h"
//===========================================================================//
//define for Queue
//===========================================================================//
#define 	FIFO_FULL		0xff	//队列满
#define		FIFO_OK			0x0f	//队列不满不空
#define 	FIFO_EMPTY		0		//队列空

#define		FIFO_TURE		1
#define		FIFO_FALSE		0

#define UInt16 unsigned int

//===========================================================================//
//First In First Out(FIFO)(unsigned char *)
//Rest Queue
//===========================================================================//
void FIFO_Reset_Queue(FIFO_QUEUE *cqueue)
{
    if (cqueue != ((FIFO_QUEUE *)0))
        cqueue->InPtr = cqueue->OutPtr = cqueue->EndPtr;
}

//===========================================================================//
//First In First Out(FIFO)
//数据入队
//===========================================================================//
void FIFO_Push_Queue(FIFO_QUEUE *cqueue, unsigned int c)
{
    ++(cqueue->InPtr);
    if (cqueue->InPtr > cqueue->EndPtr)
         cqueue->InPtr = cqueue->StartPtr;
    *(cqueue->InPtr) = c;
    
}

//===========================================================================//
//First In First Out(FIFO)//FIFO_PopQueue
//数据出队
//===========================================================================//
unsigned int FIFO_Pop_Queue(FIFO_QUEUE *cqueue)
{
	(++cqueue->OutPtr);
   	if (cqueue->OutPtr > cqueue->EndPtr)
   		cqueue->OutPtr = cqueue->StartPtr;
    return(*(cqueue->OutPtr));
}

//===========================================================================//
//First In First Out(FIFO)//FIFO_CheckQueue
//检查队列状态(满,空,不满不空)
//===========================================================================//
UInt16 FIFO_Check_Queue(FIFO_QUEUE *cqueue)
{
	if((cqueue->OutPtr - cqueue->InPtr) == 1 || 
	  (cqueue->OutPtr == cqueue->StartPtr && cqueue->InPtr == cqueue->EndPtr))
		return(FIFO_FULL);				//检查队列为满返回0xff			
	else if(cqueue->OutPtr == cqueue->InPtr)	
		return(FIFO_EMPTY);				//检查队列为空返回0x00	
	else
		return(FIFO_OK);				//检查队列为不空不满返回0x0f	
}
//===========================================================================//
//队列为空否
//Return    : 1(true) / 0(false)
//===========================================================================//		
unsigned int QueueIsEmpty(FIFO_QUEUE *cqueue)
{
	return((cqueue->InPtr == cqueue->OutPtr) ? 1 : 0);
}                         

//===========================================================================//
//队列为满否
//Return    : 1(true) / 0(false)	
//===========================================================================//	
unsigned int QueueIsFull(FIFO_QUEUE *cqueue)
{   
	return(((cqueue->OutPtr - cqueue->InPtr) == 1 || 
	  (cqueue->OutPtr == cqueue->StartPtr && 
	  cqueue->InPtr == cqueue->EndPtr)) ? 1 : 0);
}
//===========================================================================//
//END
//===========================================================================//

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?