求一个STM32F103 USBHID 收发64字节数据的例程
求一个STM32F103 USBHID 收发64字节数据的例程!更加原厂提供的例程来修改发现一直没有成功,发送64字节数据时出错。
本帖最后由 wofei1314 于 2017-4-26 10:10 编辑
是用Cube生成的吗?
需要改一下底层的函数...
正好发送64字节或者64字节的整数倍时,需要再发送一个“空包”以通知PC数据传输结束
static uint8_tUSBD_CDC_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum)
{
USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
//一下代码是为了支持64字节整数倍发送
PCD_HandleTypeDef *hpcd = pdev->pData;
PCD_EPTypeDef *ep;
ep = &hpcd->IN_ep;
if((ep->xfer_len > 0) && (ep->xfer_len % ep->maxpacket == 0))
{
USBD_LL_Transmit(pdev,epnum,NULL,0);
return USBD_OK;
}
else
{
//结束
if(pdev->pClassData != NULL)
{
hcdc->TxState = 0;
return USBD_OK;
}
else
{
return USBD_FAIL;
}
}
}
楼主求到了没有,我也想要:lol
修改下面2个宏定义
#define CUSTOM_HID_EPIN_SIZE 0x40 //64
#define CUSTOM_HID_EPOUT_SIZE 0x40
然后用
USBD_CUSTOM_HID_SendReport(hUsbDevice_0,USB_TX_Buffer,64);
发送就可以。。。。
我这个是L496zg测试了。。。。
谢谢大家的回复,最后发现是HID报告描述符写错了的问题。
页:
[1]