用STM32F103ZET6写的USB HID设备与计算机通信程序,可以接收数据,但发送有问题,请教一下大家

2019-07-21 03:04发布

USB枚举过程是成功了的,计算机设备管理器中看到的设备:

用PortHelper调试USB如下:

点击发送后,STM32接收到数据并且从串口返回接收到的数据如下:

我的STM32 USB通信程序中,当端点1接收到一次数据后就每隔一段时间通过端点2发送数据(内容是:哦艾斯黛拉),然后从串口返回的数据发现STM32每隔一段时间端点2都会产生IN中断,但是PortHelper软件并没有接收到数据,然后我用Bus Hound抓取USB包,首先抓取的是HID-compliant device设备,如下图:

然后用PortHelper USb调试器与STM32通信,Bus Hound只抓取到了OUT数据包,如下:

从端点2发送到计算机IN的数据包没有,但是STM32 USB每隔一段时间产生了IN中断,也就是说STM32发送了数据给电脑,但PortHelper中端点2没有收到数据,接着我有用Bus Hound抓取“USB输入设备”的数据,如下图:

PortHelper与STM32进行USB通信,Bus Hound抓取到的数据包如下:

从抓取到的数据包看到“USB输入设备”收到的STM32发来的数据,图中圈出来的就是“哦艾斯黛拉”的十六进制数据,我想问的是为什们“HID-compliant device”收不到IN数据?而“USB输入设备”可以?(USB的各种描述符是直接从一个STM USB HID例程复制过来的,那个例程HID-compliant device”和“USB输入设备”都可以收到STM32从端点2发送上来的数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
华南虎
1楼-- · 2019-07-24 06:34
下载学习。感谢分享!
华南虎
2楼-- · 2019-07-24 07:57
wlff 发表于 2014-11-1 17:24
Keil程序:

大哥,请问我用您的代码移植到C8T6,初始化完成后收到中断函数里面打印出来的“Error”字符,电脑USB口也没有识别到USB设备。另外我看了USB_Config()函数里为何要初始化IO口PC13呢?而PA11,PA12的IO不用初始化。希望能指点下,谢谢!
xiaobolinux
3楼-- · 2019-07-24 13:18
win键是哪个值呢HID
华南虎
4楼-- · 2019-07-24 15:50
liuyu0624 发表于 2016-2-23 16:37
谢谢分享,我的枚举成功了  收不到数据 正在找问题。拿原子老大的鼠标例程改成的通用设备

大哥,你解决问题了吗?我的也跟你一样,枚举成功了。发送数据和接收数据都无反应。
华南虎
5楼-- · 2019-07-24 21:42
 精彩回答 2  元偷偷看……
Mrwu
6楼-- · 2019-07-24 22:29
wlff 发表于 2015-1-29 20:53
 回复【8楼】 @子非鱼 :
---------------------------------

楼主啊,按照的你程序下载进入了STM32103CT86,枚举也成了,但就是通过ProHelper打印不出数据啊,len的长度也是22字节啊!就比如发送:123.

一周热门 更多>