ring_buffer.h 626 B

12345678910111213141516171819202122232425262728293031323334
  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. #define QUEUE_SIZE 10 // 队列大小,可以根据需求调整
  8. typedef struct {
  9. uint8_t buffer[QUEUE_SIZE];
  10. volatile uint16_t head; // 读指针
  11. volatile uint16_t tail; // 写指针
  12. } RingBuffer;
  13. // 初始化
  14. void RingBuffer_Init(RingBuffer *q);
  15. // 判空
  16. int RingBuffer_IsEmpty(RingBuffer *q);
  17. // 判满
  18. int RingBuffer_IsFull(RingBuffer *q);
  19. // 入队
  20. int RingBuffer_Enqueue(RingBuffer *q, uint8_t data);
  21. // 出队
  22. int RingBuffer_Dequeue(RingBuffer *q, uint8_t *data);
  23. #endif //RING_BUFFER_H