zhangshengping 发表于 2017-4-25 22:00:41

求一个STM32F103 USBHID 收发64字节数据的例程

求一个STM32F103 USBHID 收发64字节数据的例程!
更加原厂提供的例程来修改发现一直没有成功,发送64字节数据时出错。

wofei1314 发表于 2017-4-26 10:09:04

本帖最后由 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;
          }
}
}

海迹天涯 发表于 2017-4-26 13:41:55

楼主求到了没有,我也想要:lol

Paderboy 发表于 2017-4-26 15:42:41






修改下面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测试了。。。。

zhangshengping 发表于 2017-5-1 10:16:41

谢谢大家的回复,最后发现是HID报告描述符写错了的问题。
页: [1]
查看完整版本: 求一个STM32F103 USBHID 收发64字节数据的例程