大明狐 发表于 2026-7-9 14:26:46

新版ISP软件串口发送数据时遇到停止退出的问题

前阵子用USB串口玩虚拟OLED的时候,由于打开串口之后忘记关闭,单片机一直向ISP发送数据,
然后碰到了几次ISP软件停止退出的问题
就是一开始VOLED可以正常显示,过段时间软件会弹出错误提示,ISP界面卡死。点按钮之后软件关闭。






系统是WIn10,单片机是STC32G144KL246

ISP版本是 V6.96Z


====================================


今天又出现了,于是好奇做了两次测试,先将“接收”统计清零,打开串口之后放着不管它


一次是在 297992798,一次是在 308223575,(3亿左右)

然后弹出错误窗口。



==============================================

不过刚刚又换了个旧版 V6.95J 版本的ISP,结果发现,旧版ISP里可以一直接收数据,字节数超过上面那两个数量之后依旧正常发送。
截止到截图时,ISP接收的字节数是 402367533(超过4亿)


AI助手建议在程序里加上 USBLIB_OUT_Done(); 但是问题依旧,所以可能不是程序原因。而且旧版ISP没有报错。

请问这个情况可能是哪里的问题?

是ISP V6.96Z 的问题?还是虚拟OLED的问题?






大明狐 发表于 2026-7-9 16:26:12

又用 V6.96Z 版试了一下不用仿真调试接口,直接用 printf_usb 发送数据,
同样也是在 306574062 (3亿左右)的时候停止工作


狂热主宰 发表于 2026-7-10 06:52:15

大明狐 发表于 2026-7-9 16:26
又用 V6.96Z 版试了一下不用仿真调试接口,直接用 printf_usb 发送数据,同样也是在 306574062 (3亿左右) ...

如果需求急
看看别的版本
新版整合功能多
设计更难排查bug

大明狐 发表于 2026-7-10 07:55:54

狂热主宰 发表于 2026-7-10 06:52
如果需求急
看看别的版本
新版整合功能多


对,这次只是无意中发现的这个问题,平时习惯用实体屏幕当监视器,用到串口助手的时候一般也是看完就关掉,基本没有连发这么多个数据的时候。不过随着的单片机性能越来越强,将来不一定用不上这么大量数据的时候。

zhp 发表于 2026-7-10 18:27:46

多谢反馈!
问题基本已找到。

问题出在接收线程的代码里面有内存泄露,如果在接收的过程中清除接收缓冲区,或者关闭串口再重新打开接收,就不会发现问题。
只有在长时间连续接收的情况下,将问题逐步严重话,最终才能发现问题。

再次感谢您的帮忙!

大明狐 发表于 2026-7-10 19:58:57

zhp 发表于 2026-7-10 18:27
多谢反馈!
问题基本已找到。



{:4_250:}{:4_250:}{:4_250:}

USB-CDC发送数据的过程中,中途尝试过关闭串口再重新打开,也重启过几次单片机,
但是只要没有给计数器清零,都会在累计到“3亿”左右的时候停止运行。

另外尝试了下用普通串口UART1发送,好像没停止。
页: [1]
查看完整版本: 新版ISP软件串口发送数据时遇到停止退出的问题