本帖最后由 putron09 于 2010-8-19 09:32 编辑
USB数据包是64字节的,当用官方例程通过虚拟串口从PC向STM发送数据时 发送64字节以下(不含64) 那就正常,
当发送64字节数据时 USB接收函数就执行两次,相应串口就打印出128个字节(64*2) 很奇怪啊,发送64应该很正常才对,只要不超过64就可以了
每次我都会打印出来自PC得数据个数,当发送64个数据时,打印出的东西是64个数据+0x40+64个数据+0x40
当数据大于64时比如65是 打印出的数据是64个数据+0x40+1个数据+0x01(这个可以理解,65个数据分包发的,刚好是64+1)
使用的是107,看到很多103的都运行的很好,难道107就不行???
难道107的和103的不一样,如果收到数据处理完了,再发一个ACK准备下一个数据包的接收,这样丢包就不会出现,但是既然当PC发送的大量数据时肯定前面的包都是按最大包64发的,那么每个都会中断两次,那数据怎么处理,而且很多论坛的兄弟都是用103,发十几K的都没错,看了他们的代码也没什么不同,那个串口调试助手没有分包发,都是一次发的。。。。 |