完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
uint8_t USBD_HID_DataOut (void *pdev, uint8_t epnum)
{ DCD_EP_PrepareRx(pdev,HID_IN_EP,Report_buf,USB_REPORT_BUFF_SIZE); return USBD_OK; } 假设USB_REPORT_BUFF_SIZE为64,主机有可能只发送32 23等等小于64字节, 每次都是把Report_buf的数据全部读出来,然后再根据自己定的协议定的长度 再解析出本次发送 过来的具体长度。有没有USB库里面有变量记录着每次发送的实际长度? |
|
相关推荐
1个回答
|
|
在STM32的USB库中,确实有一个变量可以记录每次发送的实际长度。这个变量通常是一个全局变量,用于存储当前传输的数据长度。在STM32的HAL库中,这个变量被称为`wTransferSize`。
在你的代码示例中,你已经使用了`USBD_HID_DataOut`函数来处理USB数据的接收。在这个函数中,你可以通过以下方式获取实际传输的数据长度: ```c uint8_t USBD_HID_DataOut(void *pdev, uint8_t epnum) { uint32_t actual_length; DCD_EP_PrepareRx(pdev, HID_IN_EP, Report_buf, USB_REPORT_BUFF_SIZE); // 等待数据接收完成 while (USBD_LL_IsStallEP(pdev, epnum)); // 获取实际接收到的数据长度 actual_length = USBD_LL_GetRxDataSize(pdev, epnum); // 根据实际长度解析数据 // ... return USBD_OK; } ``` 在这个示例中,我们使用了`USBD_LL_GetRxDataSize`函数来获取实际接收到的数据长度。这个函数会返回一个`uint32_t`类型的值,表示当前传输的数据长度。 请注意,这个示例假设你已经配置了STM32的USB设备,并且使用了STM32的HAL库。如果你使用的是其他库或固件,可能需要查找相应的函数来获取实际传输的数据长度。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1609 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1540 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1587 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
529浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
503浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 02:39 , Processed in 0.684799 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号