70 lines
1.5 KiB
C
70 lines
1.5 KiB
C
#include "fifo.h"
|
||
|
||
//RingBuff_t debugRingBuff; //创建一个ringBuff的缓冲区
|
||
//RingBuff_t co2RingBuff; //创建一个ringBuff的缓冲区
|
||
|
||
/**
|
||
* @brief RingBuff_Init
|
||
* @param void
|
||
* @return void
|
||
* @note 初始化环形缓冲区
|
||
*/
|
||
void RingBuff_Init(RingBuff_t *ringBuff)
|
||
{
|
||
//初始化相关信息
|
||
ringBuff->Head = 0;
|
||
ringBuff->Tail = 0;
|
||
ringBuff->Lenght = 0;
|
||
}
|
||
|
||
/**
|
||
* @brief Write_RingBuff
|
||
* @param u8 data
|
||
* @return FLASE:环形缓冲区已满,写入失败;TRUE:写入成功
|
||
* @note 往环形缓冲区写入u8类型的数据
|
||
*/
|
||
uint8_t Write_RingBuff(RingBuff_t *ringBuff,uint8_t data)
|
||
{
|
||
if(ringBuff->Lenght >= RINGBUFF_LEN) //判断缓冲区是否已满
|
||
{
|
||
return FLASE;
|
||
}
|
||
ringBuff->Ring_Buff[ringBuff->Tail]=data;
|
||
// ringBuff.Tail++;
|
||
ringBuff->Tail = (ringBuff->Tail+1)%RINGBUFF_LEN;//防止越界非法访问
|
||
ringBuff->Lenght++;
|
||
return OK;
|
||
}
|
||
|
||
|
||
/**
|
||
* @brief Read_RingBuff
|
||
* @param u8 *rData,用于保存读取的数据
|
||
* @return FLASE:环形缓冲区没有数据,读取失败;TRUE:读取成
|
||
* @note 从环形缓冲区读取一个u8类型的数据
|
||
*/
|
||
uint8_t Read_RingBuff(RingBuff_t *ringBuff,uint8_t *rData)
|
||
{
|
||
if(ringBuff->Lenght == 0)//判断非空
|
||
{
|
||
return FLASE;
|
||
}
|
||
*rData = ringBuff->Ring_Buff[ringBuff->Head];//先进先出FIFO,从缓冲区头出
|
||
// ringBuff.Head++;
|
||
ringBuff->Head = (ringBuff->Head+1)%RINGBUFF_LEN;//防止越界非法访问
|
||
ringBuff->Lenght--;
|
||
return OK;
|
||
}
|
||
|
||
/**
|
||
* @brief Read_Length_RingBuff
|
||
* @param RingBuff_t *ringBuff
|
||
* @return
|
||
* @note
|
||
*/
|
||
uint8_t Read_Length_RingBuff(RingBuff_t *ringBuff)
|
||
{
|
||
return ringBuff->Lenght;
|
||
}
|
||
|