你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zhangshengping 提问时间:2017-4-25 22:00 /
求一个STM32F103 USBHID 收发64字节数据的例程!
更加原厂提供的例程来修改发现一直没有成功,  发送64字节数据时出错。
收藏 评论4 发布时间:2017-4-25 22:00

举报

4个回答
wofei1314 回答时间:2017-4-26 10:09:04
本帖最后由 wofei1314 于 2017-4-26 10:10 编辑

是用Cube生成的吗?
需要改一下底层的函数...
正好发送64字节或者64字节的整数倍时,需要再发送一个“空包”以通知PC数据传输结束

static uint8_t  USBD_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[epnum];
  
  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
楼主求到了没有,我也想要
Paderboy 回答时间:2017-4-26 15:42:41



QQ截图20170426153919.png

修改下面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报告描述符写错了的问题。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版