| 123456789101112131415161718192021222324252627282930313233343536 |
- //
- // Created by EDZ on 25-9-23.
- //
- #ifndef RING_BUFFER_H
- #define RING_BUFFER_H
- #include <stdint.h>
- #include "string.h"
- #define QUEUE_SIZE 30 // 队列大小,可以根据需求调整
- #define BL_DATA_SIZE 8 //存储一组蓝牙数据
- typedef struct {
- uint8_t buffer[QUEUE_SIZE][BL_DATA_SIZE];
- volatile uint16_t head; // 读指针
- volatile uint16_t tail; // 写指针
- } RingBuffer;
- // 初始化
- void RingBuffer_Init(RingBuffer *q);
- // 判空
- int RingBuffer_IsEmpty(RingBuffer *q); // 返回1表示队列为空,返回0表示队列不为空
- // 判满
- int RingBuffer_IsFull(RingBuffer *q); // 返回1表示队列已满,返回0表示队列未满
- // 入队
- int RingBuffer_Enqueue(RingBuffer *q, const uint8_t *data);
- // 出队
- int RingBuffer_Dequeue(RingBuffer *q, uint8_t *data);
- #endif //RING_BUFFER_H
|