ring_buffer.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef __RING_BUFFER_H
  2. #define __RING_BUFFER_H
  3. #include "gd32f10x.h"
  4. #define BUFFER_SIZE (4*1024) /* 环形缓冲区的大小 */
  5. typedef struct
  6. {
  7. volatile unsigned int pW; /* 写地址 */
  8. volatile unsigned int pR; /* 读地址 */
  9. unsigned char buffer[BUFFER_SIZE]; /* 缓冲区空间 */
  10. } ring_buffer;
  11. /*
  12. * 函数名:void ring_buffer_init(ring_buffer *dst_buf)
  13. * 输入参数:dst_buf --> 指向目标缓冲区
  14. * 输出参数:无
  15. * 返回值:无
  16. * 函数作用:初始化缓冲区
  17. */
  18. extern void ring_buffer_init(ring_buffer *dst_buf);
  19. /*
  20. * 函数名:void ring_buffer_write(unsigned char c, ring_buffer *dst_buf)
  21. * 输入参数:c --> 要写入的数据
  22. * dst_buf --> 指向目标缓冲区
  23. * 输出参数:无
  24. * 返回值:无
  25. * 函数作用:向目标缓冲区写入一个字节的数据,如果缓冲区满了就丢掉此数据
  26. */
  27. extern void ring_buffer_write(unsigned char c, ring_buffer *dst_buf);
  28. /*
  29. * 函数名:int ring_buffer_read(unsigned char *c, ring_buffer *dst_buf)
  30. * 输入参数:c --> 指向将读到的数据保存到内存中的地址
  31. * dst_buf --> 指向目标缓冲区
  32. * 输出参数:无
  33. * 返回值:读到数据返回0,否则返回-1
  34. * 函数作用:从目标缓冲区读取一个字节的数据,如果缓冲区空了返回-1表明读取失败
  35. */
  36. extern int ring_buffer_read(unsigned char *c, ring_buffer *dst_buf);
  37. #endif /* __RING_BUFFER_H */