写个简单的环形FIFO,相比于用读写位置去判断缓冲区空和满的方式,下面的实现方式会比较容易理解,毕竟代码是给人看的。
#define MAX_FIFO_BYTE 1024
typedef struct
{
__IO uint32_t write;
__IO uint32_t read;
__IO uint32_t count;
uint8_t data[MAX_FIFO_BYTE];
}S_FIFO, *P_FIFO;
static S_FIFO g_fifo = {
0};
void fifo_clear(void)
{
memmset(&g_fifo, 0, sizeof(g_fifo));
}
uint32_t fi