1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef __RING_BUFFER_H
- #define __RING_BUFFER_H
- #include "gd32f10x.h"
- #define BUFFER_SIZE 256 /* 环形缓冲区的大小 */
- typedef struct
- {
- volatile unsigned int pW; /* 写地址 */
- volatile unsigned int pR; /* 读地址 */
- unsigned char buffer[BUFFER_SIZE]; /* 缓冲区空间 */
- } ring_buffer;
- /*
- * 函数名:void ring_buffer_init(ring_buffer *dst_buf)
- * 输入参数:dst_buf --> 指向目标缓冲区
- * 输出参数:无
- * 返回值:无
- * 函数作用:初始化缓冲区
- */
- extern void ring_buffer_init(ring_buffer *dst_buf);
- /*
- * 函数名:void ring_buffer_write(unsigned char c, ring_buffer *dst_buf)
- * 输入参数:c --> 要写入的数据
- * dst_buf --> 指向目标缓冲区
- * 输出参数:无
- * 返回值:无
- * 函数作用:向目标缓冲区写入一个字节的数据,如果缓冲区满了就丢掉此数据
- */
- extern void ring_buffer_write(unsigned char c, ring_buffer *dst_buf);
- /*
- * 函数名:int ring_buffer_read(unsigned char *c, ring_buffer *dst_buf)
- * 输入参数:c --> 指向将读到的数据保存到内存中的地址
- * dst_buf --> 指向目标缓冲区
- * 输出参数:无
- * 返回值:读到数据返回0,否则返回-1
- * 函数作用:从目标缓冲区读取一个字节的数据,如果缓冲区空了返回-1表明读取失败
- */
- extern int ring_buffer_read(unsigned char *c, ring_buffer *dst_buf);
- #endif /* __RING_BUFFER_H */
|