buffer.c

来自「STR71X系列ARM微控制器原理与实践配套光盘」· C语言 代码 · 共 52 行

C
52
字号
#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 + =
减小字号Ctrl + -
显示快捷键?