# ring-buffer **Repository Path**: plant-some-trees/ring-buffer ## Basic Information - **Project Name**: ring-buffer - **Description**: 为嵌入式系统设计的简单环形缓冲区(循环缓冲区)。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-07-03 - **Last Updated**: 2025-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 环形缓冲区 =========== 为嵌入式系统设计的简单环形缓冲区(循环缓冲区)。 示例代码可在 examples/simple.c 中找到。 内存缓冲区的大小必须是2的幂次,环形缓冲区最多可以包含 buf_size-1 字节。 使用 ring_buffer_init(&ring_buffer, buff, sizeof(buff)) 函数创建一个新的环形缓冲区: ```c char buff[64]; ring_buffer_t ring_buffer; ring_buffer_init(&ring_buffer, buff, sizeof(buff)); ``` 在这个例子中,缓冲区大小为64字节,环形缓冲区能够容纳63字节。 该模块为访问环形缓冲区提供了以下功能(相关文档可在 ringbuffer.h 中找到):(ringbuffer.h)): ```c void ring_buffer_queue(ring_buffer_t *buffer, char data); void ring_buffer_queue_arr(ring_buffer_t *buffer, const char *data, ring_buffer_size_t size); uint8_t ring_buffer_dequeue(ring_buffer_t *buffer, char *data); ring_buffer_size_t ring_buffer_dequeue_arr(ring_buffer_t *buffer, char *data, ring_buffer_size_t len); uint8_t ring_buffer_peek(ring_buffer_t *buffer, char *data, ring_buffer_size_t index); uint8_t ring_buffer_is_empty(ring_buffer_t *buffer); uint8_t ring_buffer_is_full(ring_buffer_t *buffer); ring_buffer_size_t ring_buffer_num_items(ring_buffer_t *buffer); ```