打印

【转】stm32 usbHID调试小结

[复制链接]
5671|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2015-2-25 13:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
关于stm32的usbHID功能调试,我是颇费周折,起初用一个STM32F107开发板上的例程,体验了一下,与PC交互,可以传送2个字节的数据。超过两个字节的数据就会产生复位信号(用bushound观察到的)。
沙发
sunmeat|  楼主 | 2015-2-25 13:48 | 只看该作者
后来看看,改了一些程序中的设置,把最大传输值改了,但是还是不行的,症状是PC向单片机发送多个字节的数据可以成功,单片机向PC发送大于2个字节的数据就产生复位信号,这个问题过了两三天都没有解决。

使用特权

评论回复
板凳
sunmeat|  楼主 | 2015-2-25 13:48 | 只看该作者
这才搞了一本《圈圈教你玩USB》,仔细看看,发现描述符的设置是关键的,就分析了一下程序中的设备描述符(DeviceDiscriptor),配置描述符(ConfigDiscriptor),报告描述符(ReportDiscriptor,这个是hid设备必须的),这几个数组的设置都在usb_disc.c中,在原来的基础上进行了一些修改,这样就实现了PC与单片机通过USB-HID数据传输,按照自己的设置,一次发送或者接受最长数据为64bytes。

使用特权

评论回复
地板
sunmeat|  楼主 | 2015-2-25 13:49 | 只看该作者
可惜我们的产品用的是stm32f103,这个stm32f107上的程序下载到产品中时,什么反应都没有了。

使用特权

评论回复
5
sunmeat|  楼主 | 2015-2-25 13:49 | 只看该作者
然后找来一个stm32f103上的USB-mouse例程,可以在以下地址下载:http://www.pudn.com/downloads424 ... /detail1796530.html,这个例程是用IAR建立的工程。

使用特权

评论回复
6
sunmeat|  楼主 | 2015-2-25 13:50 | 只看该作者
将程序下载之后,运行起来电脑能检测到设备,然后就根据自己刚学的一些知识,在这个例程中进行程序修改,和前面做的工作一样,主要是修改描述符,上面提到的三个描述符都要进行一些修改。

使用特权

评论回复
7
sunmeat|  楼主 | 2015-2-25 13:50 | 只看该作者
然后是修改usb_prop.c中的Joystick_Reset函数,要将endpoint1的发送最大值设为自己想要的,还要设置接收配置。

使用特权

评论回复
8
sunmeat|  楼主 | 2015-2-25 14:01 | 只看该作者
最后这函数修改为如下:

QQ图片20150225135158.png (39.19 KB )

QQ图片20150225135158.png

使用特权

评论回复
9
sunmeat|  楼主 | 2015-2-25 14:02 | 只看该作者
这样就基本上可以进行通信了,程序运行起来之后,在PC端用bushound发送数据,在单片机上设置程序将接收到的数据返回。

使用特权

评论回复
10
sunmeat|  楼主 | 2015-2-25 14:04 | 只看该作者
本帖最后由 sunmeat 于 2015-2-25 14:06 编辑

实现这个功能,只要在usb_istr.c中的编写一个函数如下:

使用特权

评论回复
11
sunmeat|  楼主 | 2015-2-25 14:06 | 只看该作者
写了这个函数之后,编译时会提示重定义NOP_Process,这个问题的解决办法是:在usb_config.h中找到这样一句:#define  EP1_IN_Callback   NOP_Process,将这一句注释掉,程序就运行成功了。

使用特权

评论回复
12
sunmeat|  楼主 | 2015-2-25 14:06 | 只看该作者
写了这个函数之后,编译时会提示重定义NOP_Process,这个问题的解决办法是:在usb_config.h中找到这样一句:#define  EP1_IN_Callback   NOP_Process,将这一句注释掉,程序就运行成功了。

使用特权

评论回复
13
sunmeat|  楼主 | 2015-2-25 14:07 | 只看该作者
最后调试好的工程可以到如下地址下载http://www.pudn.com/downloads424 ... /detail1796577.html

使用特权

评论回复
14
Zacking| | 2015-3-3 16:20 | 只看该作者
来学习学习,请问大侠,我现在要学stm32 usb,组长叫我先学一下usb先后面才给我做项目,请问学这个要怎样学要多久啊,网上很多人都是usb很难学了挺久都迷迷糊糊的。 不可能给我那么多时间去学啊

使用特权

评论回复
15
zwj123000| | 2019-3-14 17:22 | 只看该作者
感谢大神分享

使用特权

评论回复
16
lvben5d| | 2019-3-14 23:13 | 只看该作者
这波刷分操作 分享的价值大打折扣,看的一段一段的。

使用特权

评论回复
17
chuntian2016| | 2019-3-22 23:39 | 只看该作者
楼主还是非常牛的,,善于学习总结的e

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝