ring_buffer.h 830 B

123456789101112131415161718192021222324252627282930313233343536
  1. //
  2. // Created by EDZ on 25-9-23.
  3. //
  4. #ifndef RING_BUFFER_H
  5. #define RING_BUFFER_H
  6. #include <stdint.h>
  7. #include "string.h"
  8. #define QUEUE_SIZE 30 // 队列大小,可以根据需求调整
  9. #define DATA_SIZE 12 //存储一组数据
  10. typedef struct {
  11. uint8_t buffer[QUEUE_SIZE][DATA_SIZE];
  12. volatile uint16_t head; // 读指针
  13. volatile uint16_t tail; // 写指针
  14. } RingBuffer;
  15. // 初始化
  16. void RingBuffer_Init(RingBuffer *q);
  17. // 判空
  18. int RingBuffer_IsEmpty(RingBuffer *q); // 返回1表示队列为空,返回0表示队列不为空
  19. // 判满
  20. int RingBuffer_IsFull(RingBuffer *q); // 返回1表示队列已满,返回0表示队列未满
  21. // 入队
  22. int RingBuffer_Enqueue(RingBuffer *q, const uint8_t *data);
  23. // 出队
  24. int RingBuffer_Dequeue(RingBuffer *q, uint8_t *data);
  25. #endif //RING_BUFFER_H