简介
由于在写嵌入式代码时,经常需要用到一些代码,所以,在此进行总结。
头文件
#define USE_RING_BUFFER 1
/******************************************************************************/
/* Ring Buffer */
/******************************************************************************/
#if USE_RING_BUFFER
typedef struct{
uint16_t head;
uint16_t tail;
uint16_t capacity;
uint8_t* buffer;
uint8_t is_writing;
}ring_buffer_t;
void rb_init(ring_buffer_t* rb, uint8_t* buffer, uint16_t buf_len);
uint16_t rb_can_read(ring_buffer_t* rb);
uint16_t rb_can_write(ring_buffer_t* rb);
uint16_t rb_read(ring_buffer_t* rb, uint8_t* data, uint16_t count);
uint16_t rb_write(ring_buffer_t* rb, const uint8_t* data, uint16_t count);
void rb_clear(ring_b