STS_E2/AirQuality/Src/fifo.c

70 lines
1.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}