在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库。如果你使用的是其他库或固件,可能需要查找相应的函数来获取实际传输的数据长度。
在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库。如果你使用的是其他库或固件,可能需要查找相应的函数来获取实际传输的数据长度。
举报