⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver_buffer.c

📁 基于中断的串口驱动~~~~~~~~~~~~~~~~~~
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -