VB串口数据丢失的问题怎么解决

VB串口数据丢失的问题怎么解决,第1张

>并不是上位机太快,而是你把程序写慢了。
两个问题:
1)接收中断函数里怎么能有发送标志位的判断?
这句去掉:while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
2)你这个串口用的方式不对,你每接收一个数据需要进一次中断,实际上应该是进一次中断把所有数据接收完毕。通过一个超时判断判断是否后续还有数据,没有数据了才退出中断函数。

个人理解:准备数据的时间若小于中断处理的时间,会造成CPU进行中断处理过程中,下一个数据就已经准备好了从而刷新了数据。
具体执行过程可以分为:
I/O准备数据,准备好后向CPU请求中断,CPU进行中断响应从而进行中断处理。
这时候由于I/O采取的是程序中断处理方式,因此CPU和I/O是并行处理的,即CPU在进行中断处理的时候,I/O又同时在准备下一个数据。
当准备好下一个数据后,会刷新数据,因此如果中断处理时间大于准备数据的时间数据会发生丢失。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13141451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-11
下一篇 2023-06-11

发表评论

登录后才能评论

评论列表(0条)

保存