OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3104|回复: 1

串口调试助手通过虚拟串口发送数据单片机,速度过快,数据溢出

[复制链接]

2

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2011-8-24
在线时间
62 小时
发表于 2020-5-19 06:33:05 | 显示全部楼层 |阅读模式
10金钱
应用场景如下:USB虚拟串口到串口透传 (PC -USB虚拟串口-STM32-串口1)
问题:串口调试助手通过虚拟串口发送数据到STM32,速度过快,串口1发送缓存数据溢出(串口波特率115200)


程序代码如下:
void EP3_OUT_Callback(void)
{
        u16 USB_Rx_Cnt;
        USB_Rx_Cnt = USB_SIL_Read(EP3_OUT, USB_Rx_Buffer);        //得到USB接收到的数据及其长度
        EnMoreUartTX(USB_Rx_Buffer, USB_Rx_Cnt);        //处理数据(其实就是保存数据)
        SetEPRxValid(ENDP3);                                                                //时能端点3的数据接收       
}

程序结果数据溢出

结果1-2

结果1-2




添加判断串口1缓存剩余空间条件保存数据后,串口调试助手死机,未响应:
void EP3_OUT_Callback(void)
{
        u16 USB_Rx_Cnt;
        u16 UartTX_Remain_space ;
        USB_Rx_Cnt = USB_SIL_Read(EP3_OUT, USB_Rx_Buffer);        //得到USB接收到的数据及其长度
        UartTX_Remain_space =Calculate_left_UartTX();        //串口1发送缓冲取剩余空间
        if(USB_Rx_Cnt<=UartTX_Remain_space)        //接收数据小于等于剩余空间保存数据
        {               
        EnMoreUartTX(USB_Rx_Buffer, USB_Rx_Cnt);        //处理数据(其实就是保存数据)
        SetEPRxValid(ENDP3);                                                                //时能端点3的数据接收
        }
}



结果2

结果2



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-19 06:33:08 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-2 20:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表