OpenEdv-开源电子网

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

STM32F407的双向HID调试成功

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-26
在线时间
0 小时
发表于 2015-1-27 11:46:06 | 显示全部楼层 |阅读模式
这两天在调STM32F407的通用HID通讯
看过http://www.openedv.com/posts/list/0/41991.htm#265954 的帖子;
增加了USBD_HID_DataOut 回调处理函数,测试不会调用,查了下代码,发现初始化函数 USBD_Init 虽然将 USBD_HID_cb和 USR_cb的回调关系建立了,但需要中间变量 USBD_DCD_INT_fops的 USBD_DataOutStage 调用,但 Joystick例程中根本没处理 接收中断 DCD_HandleOutEP_ISR 或  USBD_OTG_EP1OUT_ISR_Handler;
所以简单增加的USBD_HID_DataOut 根本不会运行;
另外
USBD_Init 中的DCD_Init(pdev , coreID);
DCD_Init 里将 ep->xfer_buff = 0; 数据缓存指针指到0地址了;这样HID的数据接收也就存到0地址去了。 
这样 我们的中断处理 USBD_OTG_ISR_Handler中

case STS_DATA_UPDT: 
    if (status.b.bcnt) 
    { 
      USB_OTG_ReadPacket(pdev,ep->xfer_buff, status.b.bcnt); 
      ep->xfer_buff += status.b.bcnt; 
      ep->xfer_count += status.b.bcnt; 
    } 
    break; 
这肯定有内存访问问题;
解决方法如下:在 DCD_Init(pdev , coreID);后增加
ep = &pdev->dev.out_ep[1]; // add by hqp 2015-01-28
ep->xfer_buff = GUSBRxBuf;// add by hqp 2015-01-28 GUSBRxBuf 是全局数组,空间不小于一包数据大小;

另外在 OTG_FS_IRQHandler的最后
ep = &(USB_OTG_dev.dev.out_ep[1]);
   if(ep->xfer_count!=0)将 ep->xfer_buff中的接收数据取出 給应用处理

至此双向HID收发调通。


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

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-5-13
在线时间
1 小时
发表于 2016-5-17 22:00:12 | 显示全部楼层
买了原子探索者开发板,调试USB  hid 与PC通讯,楼主能提供一份源码? 我的邮箱: 825853186@qq.com  , 不胜咸激。
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-1-28 00:01:34 | 显示全部楼层
谢谢分享....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2015-2-16
在线时间
0 小时
发表于 2015-2-16 17:35:35 | 显示全部楼层

可以傳給程序嗎?
我自己調試程序 用了好多個月都一直有問題
sean4022@yahoo.com.tw

回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2014-9-10
在线时间
0 小时
发表于 2015-4-20 22:41:29 | 显示全部楼层
@huaqping,我最近也在研究这个,但调试过程中好多问题,可以把您的工程文件发给我吗?谢谢!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2014-9-10
在线时间
0 小时
发表于 2015-4-20 22:42:10 | 显示全部楼层
回复【4楼】haweiliya:
---------------------------------
哦,我的邮箱479445582@qq.com,非常感谢!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-5-3
在线时间
0 小时
发表于 2015-5-3 12:37:56 | 显示全部楼层
2582133536@qq.com,可以分享一下吗?谢谢!
回复 支持 反对

使用道具 举报

27

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2015-2-16
在线时间
5 小时
发表于 2015-7-12 00:12:13 | 显示全部楼层
188089942@qq.com

可以给我提供帮助吗?   我想要你的源代码!!



我已经调了一个多月了
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-26
在线时间
0 小时
 楼主| 发表于 2015-7-16 17:27:05 | 显示全部楼层
代码就是官方 Joystick例程,
参考 http://www.openedv.com/posts/list/0/41991.htm#265954
再增加1楼那样的处理就OK了
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2013-8-20
在线时间
0 小时
发表于 2015-8-9 01:27:20 | 显示全部楼层
回复【8楼】huaqping:
---------------------------------
按照楼主的解决方法还是接收不了数据, 希望楼主能发源码附件,小弟在此谢过~!
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-15 17:34:50 | 显示全部楼层
楼主可以给我发一份代码吗  谢谢了  1075452150@qq.com
天地是我的心
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-18 10:42:21 | 显示全部楼层
能不能给发一份代码 谢谢了  1075452150@qq.com
天地是我的心
回复 支持 反对

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2015-12-22
在线时间
22 小时
发表于 2015-12-22 18:15:35 | 显示全部楼层
ep = &pdev->dev.out_ep[1]; // add by hqp 2015-01-28
 ep->xfer_buff = GUSBRxBuf;// add by hqp 2015-01-28 GUSBRxBuf 是全局数组,空间不小于一包数据大小;

以上两句程序应该放在什么位置?
放在 DCD_Init()里边还是 DCD_Init(pdev , coreID);这句话之后?
如果是后者,提示两个错误,没有ep及GUSBRxBuf的定义
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-23 10:29:33 | 显示全部楼层
回复【12楼】phmatthaus:
---------------------------------
你好  你是不是也在条HId的双向通信?我现在调通发送了 接收还是没有搞定。请问你搞定了吗  搞定可以给我发一份吗  1075452150@qq.com    谢谢了 好人一生平安
天地是我的心
回复 支持 反对

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2015-12-22
在线时间
22 小时
发表于 2015-12-23 12:49:07 | 显示全部楼层
回复【13楼】gebo:
---------------------------------
我目前也和你一样,正在调试中。目前PC端还无法收到数据,只是能找到和打开设备。
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2015-10-10
在线时间
27 小时
发表于 2015-12-25 17:32:44 | 显示全部楼层
楼主,求代码,邮箱:chw_wei@163.com,谢谢!
回复 支持 反对

使用道具 举报

12

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2012-10-28
在线时间
18 小时
发表于 2016-2-17 17:06:13 | 显示全部楼层
楼主你好 按照的你的步骤 在usbd_core.c中的USBD_Init()函数中 DCD_Init(pdev , coreID);后面增加         ep = &pdev->dev.out_ep[1];        // add by hqp 2015-01-28        ep->xfer_buff = GUSBRxBuf;// add by hqp 2015-01-28 GUSBRxBuf 是全局数组,空间不小于一包数据大小;


然后再在OTG_FS_IRQHandler()后面加入
USB_OTG_EP *ep;
ep = &(USB_OTG_dev.dev.out_ep[1]);
                if(ep->xfer_count!=0)
                {
                        for(i=0;i<8;i++){
                                buffer1 = GUSBRxBuf;
                        }
                }

但是并没有起作用 ,不知道是哪里出了问题。按照http://www.openedv.com/posts/list/0/41991.htm#265954帖子也添加了回调函数 但是GUSBRxBuf中并没有数据
而且根本就没有进入if(ep->xfer_count!=0)中,请楼主帮帮忙感激不尽了

DCD_Init插入位置

DCD_Init插入位置

OTG_FS_IRQ插入位置

OTG_FS_IRQ插入位置
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-4-16
在线时间
7 小时
发表于 2016-4-20 21:19:17 | 显示全部楼层
楼主跪求调好的源代码啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-4-16
在线时间
7 小时
发表于 2016-4-20 21:20:03 | 显示全部楼层
我的QQ    114743330@qq.com
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-4-29
在线时间
0 小时
发表于 2016-4-29 12:51:32 | 显示全部楼层
楼主,问题怎么解决的?帮帮忙,谢谢
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-4-22
在线时间
2 小时
发表于 2016-5-19 10:37:06 | 显示全部楼层
楼主,我毕业设计也在弄这个,能把你的工程源码发我一份吗,谢谢你啦,真的很急啊,邮箱951747197@qq.com,求楼主救命啊
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-4-22
在线时间
2 小时
发表于 2016-5-19 20:12:40 | 显示全部楼层
求求楼主了,真的很急,发我一份好不好
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-4-22
在线时间
2 小时
发表于 2016-5-19 20:13:07 | 显示全部楼层
求求楼主了,发我一份吧,求求楼主了
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-4-22
在线时间
2 小时
发表于 2016-5-22 17:18:57 | 显示全部楼层
楼主,我邮箱是951747197@qq.com,求求你发我一份吧,求求你了
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2013-3-19
在线时间
8 小时
发表于 2016-9-8 16:44:07 | 显示全部楼层
楼主,发我一份,入门中  270334034@qq.com
努力,加油,提高能力
回复 支持 反对

使用道具 举报

4

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-9-10
在线时间
2 小时
发表于 2016-9-21 19:24:01 | 显示全部楼层
楼主,请你也发给我一份全部代码吧,604187822@qq.com,谢谢!
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-1-3
在线时间
3 小时
发表于 2016-12-28 15:41:28 | 显示全部楼层
跪求楼主共享一份调试通了的代码,谢谢。25765672@qq.com
回复 支持 反对

使用道具 举报

0

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2016-3-30
在线时间
67 小时
发表于 2016-12-28 19:54:26 | 显示全部楼层
呵呵,都是在要源代码的。
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-3-1
在线时间
11 小时
发表于 2017-8-24 22:53:46 | 显示全部楼层
最近也在调USB HID,但是每次只能上电能枚举成功一次,后续都是失败,楼主可否让我借鉴一下源码 ,邮箱825810240@qq.com,不胜感激
回复 支持 反对

使用道具 举报

1

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2014-7-5
在线时间
43 小时
发表于 2018-10-24 20:21:42 | 显示全部楼层
楼主确实牛,一下子就解开了我的问题,感谢
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2015-10-23
在线时间
56 小时
发表于 2018-11-3 20:10:30 | 显示全部楼层
速度能达到多少?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 14:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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