STM32
直播中

蒲泛粟

7年用户 909经验值
私信 关注
[问答]

如何去实现STM32串口双缓冲循环队列接收数据呢

如何去实现STM32串口双缓冲循环队列接收数据呢?

回帖(1)

关睿

2021-12-7 15:20:56









typedef struct
{
uint16_t Head;//头指针
uint16_t Tail;//尾指针
uint16_t Lenght;//长度
uint8_t Ring_Buff[200];//缓冲大小
}RingBuff_t;
extern RingBuff_t ringBuff;
void RingBuff_Init();缓冲区初始化
uint8_t Write_RingBuff(uint8_t data);//入队
uint8_t Read_RingBuff(uint8_t *rData);//出队


void RingBuff_Init(void)
{
ringBuff.Head=0;
ringBuff.Tail=0;
ringBuff.Lenght=0;
}


uint8_t Write_RingBuff(uint8_t data)
{
if(ringBuff.Lenght>=200)
{
  return 1;
}
ringBuff.Ring_Buff[ringBuff.Tail]=data;
ringBuff.Tail=(ringBuff.Tail+1)%200;
ringBuff.Lenght++;
return 0;
}


uint8_t Read_RingBuff(uint8_t *rData)
{
if(ringBuff.Lenght==0)
{
  return 1;
}
*rData=ringBuff.Ring_Buff[ringBuff.Head];
ringBuff.Head=(ringBuff.Head+1)%200;
ringBuff.Lenght--;
return 0;
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分