来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
五一假期这几天,鱼鹰准备写一个方便使用、移植的串口框架(适用于 STM32、GD32),花了几天时间,终于把 DMA 发送、接收的框架写好了,进入了最终的测试阶段。
于是鱼鹰使用 XCOM 这个串口工具准备测试一波。
毕竟之前用的时候,感觉也还行,没啥大问题,比较稳定,一般串口稳定性测试的时候都用它。
不过这次通过定时 20 ms 发送字符串的方式验证串口接收程序,发现工具发送的字节数和单片机接收的字节数总是对不上。
刚开始几百 K 字节,是没问题的,当达到 1 M 左右字节时,发现总是单片机接收的字节数大于工具显示的已发送字节数,莫名其妙(从这得到经验,代码测试一定要经过长时间测试才行)。
鱼鹰对自己写的无锁队列串口程序还是比较自信的《终极串口接收方式,极致效率》《附源码-终极串口接收(二)》,毕竟验证了多年,虽然这次为了减少空间使用,稍微修改了一下代码,但也检查了使用这些变量的位置,并没有发现问题。
所以,出于对自己的自信,怀疑是串口工具出现了问题,于是准备搬出鱼鹰学习 51 时的老古董工具:STC -ISP
同样的代码,同样的字符串,同样的 20 ms 定时发送,发现不管是短期测试,还是长期测试,工具显示的发送数据长度和代码打印的接收数据长度总是保持一致,这说明鱼鹰的接收程序不存在问题。
这下石锤了,XCOM 工具有问题!
亏咱那么信任它。果然除了自己,谁都要持怀疑态度。
做技术就是如此,怀疑所有,直到你通过测试消除你的怀疑。
STC 这款多功能工具,鱼鹰也是用了很久了,大学四年+工作一年都在用它的串口功能,直到后来,用了 XCOM,感觉也不错,而 STC-ISP 软件,如果串口拔出,操作不当(没有关闭串口的情况下直接发送数据),会导致该工具卡死(只能通过任务管理器关闭,很烦),而且界面做的也不是很好,于是弃用了。
不过现在看来,有些工具看着很 LOW,真正用起来,核心功能还是非常给力的,不应该有了新欢,忘了旧爱。
最后,最近微信出了显示 IP 归属地的功能,大家可以在此留言看看自己的归属地在哪,是不是还在国内。