driver_buffer.c

来自「基于中断的串口驱动~~~~~~~~~~~~~~~~~~」· C语言 代码 · 共 67 行

C
67
字号
#include "driver_buffer.h"

//创建一个环形队列,将控制结构与存储区联系起来
bool DBuffer_Create(DBuffer *DBuf, DATA_TYPE *Buf, unsigned int BufSize)
{
	if(DBuf!=NULL && Buf!=NULL)
	{
		DBuf->front=Buf;
		DBuf->rear=Buf;
		DBuf->head=Buf;
		DBuf->end=Buf+BufSize-1;
		DBuf->size=BufSize;
		DBuf->length=0;
		return true;
	}
	
	return false;
}

//入队,返回值为成功与否
bool DBuffer_Write(DBuffer *DBuf, DATA_TYPE Data)
{
	if(DBuf!=NULL)
	{
		if(DBuf->length<DBuf->size)
		{
			*(DBuf->rear)=Data;
			DBuf->rear++;
			if(DBuf->rear>DBuf->end)	//环形队列处理
				DBuf->rear=DBuf->head;
			DBuf->length++;
			return true;			
		}
	}
	
	return false;
}

//出队,返回值为成功与否
bool DBuffer_Read(DBuffer *DBuf, DATA_TYPE *Data)
{
	if(DBuf!=NULL)
	{
		if(DBuf->length!=0)
		{
			*Data=*(DBuf->front);
			DBuf->front++;
			if(DBuf->front>DBuf->end)	//环形队列处理
				DBuf->front=DBuf->head;
			DBuf->length--;
			return true;
		}
	}
		
	return false;
}

void DBuffer_Flush(DBuffer *DBuf)
{
	if(DBuf!=NULL)
	{
		DBuf->front=DBuf->head;
		DBuf->rear=DBuf->head;
		DBuf->length=0;
	}
}

⌨️ 快捷键说明

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