关于串口接收数据缓冲问题

我用串口测试实时接收一个2k采样率的正弦波并显示波形,不管是我自己写的程序还是Labview
都出现了同一个问题,就是一开始波形的频率是对的,然后我进入中断一会,回来继续接收数据
感觉波形被压缩了一样,突然来了一大堆数据,过一会就会恢复正常。这是缓存区哪里的问题呢?接收缓冲,传输缓冲?

接收缓冲吧,数据没被处理。

在中断时,串口设备还在不断的发送数据;
中断结束,恢复正常时:接收缓存区有一大堆数据,这时你有两种处理方式:
1、把这些数据都清空不要;
2、对这些数据进行处理。(注意这些数据可能有多个包,有些包数据不完整)

接收缓存区一直在接收数据,直到填满为止。填满后会覆盖原先的。

串口接收数据寄存器收到数据后会把接收标志位RI置位的,电脑发送数据是一个字节接着一个字节,两个字节之间会有延时,所以收到数据你需要尽快处理,不然可能会被新的数据覆盖,配置中断就是为了及时响应把数据读出存储起来。所以接收数据寄存器内收到数据后RI就会置1,在中断里把数据存储 然后及时把RI清零接收下一字节数据。

请参考此文:
https://chengxiangyu.blog.csdn.net/article/details/126235480