打印

求助:端点0处理函数

[复制链接]
5896|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shangelaila|  楼主 | 2010-7-2 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:o在STM32的USB例程里面,应该如何增加用户自己定义的端点0 的处理函数啊?貌似只看到有EP1_OUT_Callback端点1的。。求助ing。。。
沙发
香水城| | 2010-7-2 11:39 | 只看该作者
你要增加什么函数?处理什么?

使用特权

评论回复
板凳
shangelaila|  楼主 | 2010-7-2 11:44 | 只看该作者
本帖最后由 shangelaila 于 2010-7-2 11:45 编辑

2# 香水城
增加一个函数,处理我自己定义的命令,比如说我从主机通过端点0给设备发送a1 01 02 01 00 00 06 00,然后设备再通过端点0回复06 00 00 00,这样

使用特权

评论回复
地板
香水城| | 2010-7-2 11:53 | 只看该作者
你可以参考JoyStickMouse这个例子,在Joystick_Data_Setup()函数中,参照GET_PROTOCOL的处理设置。

使用特权

评论回复
5
shangelaila|  楼主 | 2010-7-2 15:14 | 只看该作者
4# 香水城
 CopyRoutine = Joystick_GetProtocolValue;能帮忙解释一下嘛?有些看不懂,是我要自己写一个函数,然后 CopyRoutine = Joystick_MyCmd;吗?

使用特权

评论回复
6
香水城| | 2010-7-2 15:16 | 只看该作者

使用特权

评论回复
7
shangelaila|  楼主 | 2010-7-2 16:17 | 只看该作者
本帖最后由 shangelaila 于 2010-7-2 16:18 编辑

6# 香水城
增加了函数
u8 *My_Cmd(u16 length)

  if (length == 0)    
   return (u8*)6; 
  return My_Buffer;
}

CopyRoutine = My_Cmd;
结果BUS HOUND里显示stall pid,请问是怎么回事?

使用特权

评论回复
8
香水城| | 2010-7-2 16:29 | 只看该作者
请说清楚一些,什么时候STALL PID?

使用特权

评论回复
9
shangelaila|  楼主 | 2010-7-2 16:34 | 只看该作者
8# 香水城
在主机发送了a1 01 02 01 00 00 06 00之后,就STALL PID 04 00 00 C0,而且设备也没有回复数据给主机

使用特权

评论回复
10
香水城| | 2010-7-2 16:46 | 只看该作者
估计你在Joystick_Data_Setup()函数中的处理不对。

使用特权

评论回复
11
shangelaila|  楼主 | 2010-7-2 20:16 | 只看该作者
10# 香水城
CopyRoutine = My_Cmd;不是将数据发送了吗?

使用特权

评论回复
12
香水城| | 2010-7-2 20:35 | 只看该作者
10# 香水城
CopyRoutine = My_Cmd;不是将数据发送了吗?
shangelaila 发表于 2010-7-2 20:16


问题是你的程序恐怕根本没有执行到这里。

使用特权

评论回复
13
shangelaila|  楼主 | 2010-7-3 08:18 | 只看该作者
12# 香水城
执行到了,我在这里放Joystick_send(),可以看到端点1有数据发送

使用特权

评论回复
14
shangelaila|  楼主 | 2010-7-5 07:54 | 只看该作者
12# 香水城
请问端点0发送过来的普通数据也是在这个函数中处理吗?

使用特权

评论回复
15
香水城| | 2010-7-5 08:32 | 只看该作者
12# 香水城
执行到了,我在这里放Joystick_send(),可以看到端点1有数据发送
shangelaila 发表于 2010-7-3 08:18


这里发送数据,是通过你自己的命令(a1 01 02 01 00 00 06 00)发送的吗?

使用特权

评论回复
16
shangelaila|  楼主 | 2010-7-5 08:48 | 只看该作者
15# 香水城
嗯是的,现在已经能够返回数据了,那主机通过端点0给我发送普通数据也是通过这个方法处理吗?

使用特权

评论回复
17
香水城| | 2010-7-5 10:08 | 只看该作者
15# 香水城
嗯是的,现在已经能够返回数据了,那主机通过端点0给我发送普通数据也是通过这个方法处理吗?
shangelaila 发表于 2010-7-5 08:48


“现在已经能够返回数据了”是什么意思?为什么以前说不可以?

主机通过端点0发送普通数据的问题,请看我的博客里有说明。

使用特权

评论回复
18
shangelaila|  楼主 | 2010-7-5 13:04 | 只看该作者
17# 香水城
以前函数写错了,所以有些问题。现在已经好了。

按照您博客中所写的,增加了处理函数,主机发送了SET REPORT之后,我也在Process_Status_IN函数里将数据读出了,为什么还是STALL PID呢?

使用特权

评论回复
19
香水城| | 2010-7-5 13:22 | 只看该作者
你在xxxx_Data_Setup函数中处理了你要求的命令了吗?

使用特权

评论回复
20
shangelaila|  楼主 | 2010-7-5 13:25 | 只看该作者
19# 香水城
嗯,在Data_Setup中增加了
if (pInformation->USBbmRequestType == CLASS_REQUEST|INTERFACE_RECIPIENT
            && RequestNo == SET_REPORT)
  {
        CopyRoutine = My_GetReport;
  }

使用特权

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

本版积分规则

0

主题

120

帖子

1

粉丝