# ringbuffer **Repository Path**: wu-bussu/ringbuffer ## Basic Information - **Project Name**: ringbuffer - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-10 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 环形缓冲区 (Ring Buffer) 这是一个简单的环形缓冲区实现,适用于嵌入式系统中的数据队列管理。该实现提供了初始化、入队、出队以及清空队列的功能。 ## 功能简介 - **初始化队列**:设置缓冲区和其大小。 - **入队操作**:将一个字节的数据添加到队列中。 - **出队操作**:从队列中移除一个字节的数据。 - **清空队列**:移除队列中的所有数据。 - **检查队列状态**:判断队列是否为空。 ## API 说明 - `void Queue_Init(RingBuffer_Handle_t *handle, uint8_t *buf, uint16_t size)` 初始化环形缓冲区队列。 - `err_code_t Queue_Push(RingBuffer_Handle_t *handle, uint8_t byte)` 将一个字节推入队列。如果队列已满,则返回错误代码。 - `err_code_t Queue_Pop(RingBuffer_Handle_t *handle, uint8_t *byte)` 从队列中弹出一个字节。如果队列为空,则返回错误代码。 - `uint16_t Queue_PopAll(RingBuffer_Handle_t *handle, uint8_t *buf)` 弹出队列中的所有字节到提供的缓冲区,并返回实际弹出的字节数。 - `err_code_t QueueIsEmpty(RingBuffer_Handle_t *handle)` 检查队列是否为空。队列为空时返回成功状态码,否则返回错误状态码。 ## 使用示例 以下是一个简单的使用示例,展示如何初始化队列并进行入队和出队操作: ```c #include "ringbuffer.h" // 假设 RingBuffer_Handle_t 和 err_code_t 在 ringbuffer.h 中定义 int main() { uint8_t buffer[100]; RingBuffer_Handle_t handle; Queue_Init(&handle, buffer, sizeof(buffer)); // 入队一个字节 Queue_Push(&handle, 'A'); uint8_t byte; // 出队一个字节 if (Queue_Pop(&handle, &byte) == SUCCESS) { // 处理取出的字节 } return 0; } ``` ## 许可证 本项目采用 MIT 许可证。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 贡献 欢迎贡献代码和改进!如果您发现任何问题或有改进建议,请提交 issue 或 pull request。 ## 致谢 感谢所有贡献者和支持者,使这个项目得以实现和持续改进。