CMake构建CH58x项目,脱离eclipse使用Clion或者Vscode编写代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 lines
843 B

#include "fifo.h"
static uint16_t Fifo_Next(Fifo_t *fifo, uint16_t index)
{
return (index + 1) % fifo->Cap;
}
void Fifo_Init(Fifo_t *fifo, uint8_t *data, uint16_t cap)
{
fifo->Data = data;
fifo->Cap = cap;
fifo->Size = 0;
fifo->Begin = 0;
fifo->End = 0;
}
void Fifo_Push(Fifo_t *fifo, uint8_t data)
{
fifo->Data[fifo->End] = data;
fifo->End = Fifo_Next(fifo, fifo->End);
fifo->Size++;
}
uint8_t Fifo_Pop(Fifo_t *fifo)
{
uint8_t data = fifo->Data[fifo->Begin];
fifo->Begin = Fifo_Next(fifo, fifo->Begin);
fifo->Size--;
return data;
}
void Fifo_Clear(Fifo_t *fifo)
{
fifo->Size = 0;
fifo->Begin = 0;
fifo->End = 0;
}
bool Fifo_IsEmpty(Fifo_t *fifo)
{
return fifo->Size == 0;
}
bool Fifo_IsFull(Fifo_t *fifo)
{
return fifo->Size == fifo->Cap && fifo->Size != 0;
}