我使用超级终端时,设置里面明明可以设置以换行符作为发送行末尾。但是
实际上是一字节一字节处理的,速度感觉很慢。
有人会说串口 底层本来就是一字节一字节的处理的,这里我说的是感觉超级终端以一个字节为一个包处理的,不像串口调试工具,你先写好一串字符,按发送后一起发过去了。
所以在这里会出现:用超级终端来测试STM的虚拟串口程序永远都不会错,也就是PC上超级终端每次丢一字节数据给底层USB发给STM,这个有点像3.1.0例程中串口中断收到一字节就马上通过USB往PC上发一样。这样肯定不会出错。
问题还是出现了,我发过类似的帖子,就是用串口调试助手调试虚拟串口的例子时。发送64的倍数 个数据 会出现收到的数据大于发送的。感兴趣的可以自己实践一下,不管用官方哪个版本的虚拟串口例程,都是这个结果。
我至今都没有找到答案,所以现在我没办法,只有在上层将数据分包,而且还不能分成64一包,而分的是63字节一个包,郁闷啊!!!
超级终端是控制PC串口的工具,楼主你分析超级终端的运行原理,怎么还有USB呀?是不是有个USB虚拟串口转换器?你怎么不分析一下这个USB虚拟串口转换器是怎么处理数据包的?
回2楼的,多的64字节数据就是它前面的一个整包,重复了。
回3楼的,是STM官方的虚拟串口例程,我在每次EP3_OUT_Callback中通过串口反馈一个字符到PC上,使用
超级终端发数据时(文本文档,64字节) 发送到STM,STM居然中断接收64次,每次一字节。用串口调试工具发送同样一个文本文档,STM中断两次,每次收到64字节数据。 有哪位不信的话,请下载官网的任一个版本的
虚拟串口例程,请使用任一个串口调试助手,来发送64字节的数据。试试就知道会不会出现这个问题。