diff --git a/drivers/usb/udc/udc_stm32.c b/drivers/usb/udc/udc_stm32.c index 220ea17925f..39a795c9840 100644 --- a/drivers/usb/udc/udc_stm32.c +++ b/drivers/usb/udc/udc_stm32.c @@ -322,6 +322,13 @@ void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) return; } + if (udc_ep_buf_has_zlp(buf) && ep != USB_CONTROL_EP_IN) { + udc_ep_buf_clear_zlp(buf); + HAL_PCD_EP_Transmit(&priv->pcd, ep, buf->data, 0); + + return; + } + udc_buf_get(dev, ep); if (ep == USB_CONTROL_EP_IN) {