找回密码
 立即注册
查看: 427|回复: 3

usb做CDC,PC发送设备返回可以,设备主动发送数据卡死,什么原因

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-08 19:21:26

1

主题

5

回帖

44

积分

新手上路

积分
44
发表于 2024-11-14 11:48:43 | 显示全部楼层 |阅读模式
使用USB_SendData,发送数据,发送前用bUsbInBusy做了判断。但是主动发送给PC,设备就卡死
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2024-11-14 12:20:40 | 显示全部楼层

我用库函数正常发送数据,看一下哪里不一样
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9938
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-06-16 00:13:00
已绑定手机

37

主题

2221

回帖

2658

积分

荣誉版主

积分
2658
发表于 2024-11-14 13:35:38 | 显示全部楼层
你可以试试中断方式,可能会解决问题
因为查询方式一般需要把查询代码放主循环里面,如果你中断的代码冗长,阻塞了主循环的查询可能会导致发送卡死。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-08 19:21:26

1

主题

5

回帖

44

积分

新手上路

积分
44
发表于 2024-12-2 11:10:33 | 显示全部楼层
demo程序里都是先收到数据然后返回。如果主动向PC发送数据就会卡死,不管是用 USB_SendData 这个函数,还是
void CDC_Printf(const char *v,...)
{
        va_list ap;
        va_start(ap,v);
        USB_SendData(UsbInBuffer,vsprintf(UsbInBuffer,v,ap));
        va_end(ap);
} 这段函数,只要是主动发送就会卡死,但是如果上位机连接成功后就能执行,不知道是什么原因
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 23:58 , Processed in 0.109714 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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