环形缓冲区实现

本文详细介绍了如何实现环形缓冲区,它适用于嵌入式系统,如单片机,用于处理串口数据和状态标志的扫描。环形缓冲区作为FIFO队列,确保数据的先进先出原则。文章提供了头文件ringbuff.h、源文件ringbuff.c以及readme.md的说明。
摘要由CSDN通过智能技术生成

 本文实现了环形缓冲区,可以用在嵌入式上,拿来扫串口数据或者扫一些状态标志。环形缓冲区本质上就是一个队列,遵循FIFO先进先出。

基本的成员有:

typedef struct{
		unsigned int head;//头指针,用来读
		unsigned int tail;//尾指针,用来写
		unsigned int lenth;//记录数据长度
		unsigned char *data;//数组指针
		unsigned int bufsize;//数组大小
	}ringbuff_t;//环形缓冲区结构体

 头指针名为指针,实际上就是一个记录当前可读取的位置,读取完加一;尾指针名为指针,实际上就是一个记录当前写入数据的位置,写入后加一;没必要用指针的形式,只是记录一下位置而已。读写数据注意别越界了。

头文件: ringbuff.h

#ifndef _RING_BUFF_H_
#define _RING_BUFF_H_
	
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>	
//#define _DEBUG_RINGBUFF_    0 //debug宏

typedef struct{
	unsigned int head;//头指针,用来读
	unsigned int tail;//尾指针,用来写
	unsigned int lenth;//记录数据长度
	unsigned char *data;//数组指针
	unsigned int bufsize;//数组大小
}ringbuff_t;//环形缓冲区结构体

ringbuff_t * ringbuff_in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值