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

求一个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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版