STM32F407的双向HID调试成功

2019-07-20 05:21发布

这两天在调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收发调通。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
gebo
1楼-- · 2019-07-22 01:39
 精彩回答 2  元偷偷看……
phmatthaus
2楼-- · 2019-07-22 06:50
回复【13楼】gebo:
---------------------------------
我目前也和你一样,正在调试中。目前PC端还无法收到数据,只是能找到和打开设备。
陈与安然
3楼-- · 2019-07-22 11:10
 精彩回答 2  元偷偷看……
z755924843
4楼-- · 2019-07-22 13:23
楼主你好 按照的你的步骤 在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)中,请楼主帮帮忙感激不尽了
foucsing
5楼-- · 2019-07-22 13:29
楼主跪求调好的源代码啊
foucsing
6楼-- · 2019-07-22 18:36
 精彩回答 2  元偷偷看……

一周热门 更多>