欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单的先进先出

程序员文章站 2022-03-14 11:04:07
...
/////////////////////////////////////////////////////
#include<stdint.h>

struct FIFO
{
    uint16_t tx,rx;
    uint16_t len;
    uint8_t* buf;
}

void fifo_init(struct FIFO*f,uint8_t* buf,uint16_t len)
{
    f->rx=f->tx=0;
    f->buf = buf;
    f->len = len;
}
uint16_t fifo_put(struct FIFO*f,uint8_t* buf,uint16_t len)
{
    uint16_t i=0;
    while((((f->rx+1)&(f->len-1))!=f->tx)&&i<len)
    {
    f->buf[f->rx++]=buf[i++];
    f->rx &=f->len-1;
    }
    return i;//返回放入的数据长
}
uint16_t fifo_get(struct FIFO*f,uint8_t* buf,uint16_t len)
{
    uint16_t i=0;
    while((f->rx!=f->tx)&&i<len)
    {
    buf[i++]=f->buf[tx++]
    f->tx &=f->len-1;
    }
    return i;//返回取出的数据长
}


极其简单