项目场景:
项目场景:巡检机器人STM32控制板采用串口与工控机通信,循环队列接收缓冲区出现bug,导致循环获取历史数据包
问题描述:
巡检机器人执行任务中出现bug,往复执行历史命令,排查了好几天,最后检查上位机串口没有发送数据,单片机debug也确认串口没有接收到新数据。最后的最后才debug32的串口数据缓存循环队列,发现代码中Lenght变量出现了问题。 循环队列缓冲数据代码: 此处借用博客代码 [循环队列代码](https://blog.csdn.net/m0_47661708/article/details/106585137?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162019740716780357260766%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162019740716780357260766&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-106585137.nonecase&utm_term=%E4%B8%B2%E5%8F%A3%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97)
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()