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

📄 buffer.c

📁 STR71X系列ARM微控制器原理与实践配套光盘
💻 C
字号:
#include "Buffer.h"

static u32 Buffer[BUFFER_SIZE], *BufHead, *BufTail;
static unsigned BufUsed;
unsigned Buf_WordsUsed;

void Buf_Init(void)
{
	BufUsed = 0;
	BufHead = BufTail = Buffer + BUFFER_SIZE;
	Buf_WordsUsed = 0;
}

unsigned Buf_GetWords(void)
{
	return BufUsed;
}

int Buf_Put(u32 *data, unsigned len)
{
	if(BUFFER_SIZE - BufUsed < len)
		return -1;
	BufUsed += len;
	if(Buf_WordsUsed < BufUsed)
		Buf_WordsUsed = BufUsed;

	while(len)
	{
		if(BufTail <= Buffer)
			BufTail += BUFFER_SIZE;
		*--BufTail = *data++;
		len--;
	}
	return 0;
}

int Buf_Get(u32 *data, unsigned len)
{
	if(BufUsed < len)
		return -1;
	BufUsed -= len;

	while(len)
	{
		if(BufHead <= Buffer)
			BufHead += BUFFER_SIZE;
		*data++ = *--BufHead;
		len--;
	}
	return 0;
}

⌨️ 快捷键说明

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