SMT32F103,根据例程Custom_HID修改,利用EP1 以EP_INTERRUPT 的方式 发送包,原来的例程每次发送2个字节,现在修改后包的长度不超过64字节时发送是正常的,但当一个包长超过64字节时就发送失败,没有数据出来(程序没有死机),该改的地方都已经修改了,不知道哪个地方还没有改到位,谢谢!
Re
现象就是 超过63字节的包死活也发不出去,而且发送包的大小 还与 CustomHID_ConfigDescriptor里面的 EP1 IN endpoint 描述里包大小有关 ,没道理啊,其他的MCU 这地方设置为8 照样发送256B 以上的包。
版主你给我个邮箱我发整个工程给你,或者说 在Custom_HID 例程上,把EP1的发送包长度 改到256B一个包,需要改哪里地方? 谢谢
你修改了哪些?在哪里?
有了这些信息我才能知道你的错误在哪里,才能回答你的问题——不知道哪个地方还没有改到位?
Re:
版主好
在Custom_HID例程上修改了如下代码:
1.usb_proc.c 的CustomHID_Reset()里 SetEPTxCount(ENDP1, 64);
2.关闭 DMA中断,不让ADC采样后发送EP1包
3.在main.c里 重复发送一个128B的包,
while(1){
for(i=0;i<2;i++)
{ SetEPTxAddr(ENDP1, ENDP1_TXADDR+i*64);
SetEPTxValid(ENDP1);
Delay(10000);
}
}
4. 由于一个包是128B,最大包长是64B,所以分两次发送出来,奇怪的是所有例程发送包时都没有查发送状态的处理,也没有找到相应的状态等待函数,这样的话,是不是出现第一个包还没有发送完,第二个包就冲掉了第一个包的数据?
5. 所以问题很简单,就是如何发送一个多数据包,发送函数要如何写?
谢谢!
Re:
谢谢版主,已经搞定!
需要代码的朋友发Email我, 支持 SET REPORT 和 多包发送