diff --git a/port/dwc2/usb_glue_at.c b/port/dwc2/usb_glue_at.c index 8d45f651..636ce12c 100644 --- a/port/dwc2/usb_glue_at.c +++ b/port/dwc2/usb_glue_at.c @@ -56,7 +56,12 @@ uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) #endif } +extern uint32_t SystemCoreClock; + void usbd_dwc2_delay_ms(uint8_t ms) { - /* implement later */ -} \ No newline at end of file + uint32_t count = SystemCoreClock / 1000 * ms; + while (count--) { + __asm volatile("nop"); + } +} diff --git a/port/dwc2/usb_glue_gd.c b/port/dwc2/usb_glue_gd.c index f3fa4d92..cd6e4c09 100644 --- a/port/dwc2/usb_glue_gd.c +++ b/port/dwc2/usb_glue_gd.c @@ -35,7 +35,12 @@ uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) #endif } +extern uint32_t SystemCoreClock; + void usbd_dwc2_delay_ms(uint8_t ms) { - /* implement later */ -} \ No newline at end of file + uint32_t count = SystemCoreClock / 1000 * ms; + while (count--) { + __asm volatile("nop"); + } +} diff --git a/port/dwc2/usb_glue_hc.c b/port/dwc2/usb_glue_hc.c index 431b5db5..15ba5d69 100644 --- a/port/dwc2/usb_glue_hc.c +++ b/port/dwc2/usb_glue_hc.c @@ -25,7 +25,12 @@ uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) return 0; } +extern uint32_t SystemCoreClock; + void usbd_dwc2_delay_ms(uint8_t ms) { - /* implement later */ -} \ No newline at end of file + uint32_t count = SystemCoreClock / 1000 * ms; + while (count--) { + __asm volatile("nop"); + } +} diff --git a/port/dwc2/usb_glue_nation.c b/port/dwc2/usb_glue_nation.c index f899e738..3e96b22f 100644 --- a/port/dwc2/usb_glue_nation.c +++ b/port/dwc2/usb_glue_nation.c @@ -180,8 +180,14 @@ void USB_HS_IRQHandler(void) g_usb_dwc2_irq(g_usb_dwc2_busid); } +extern uint32_t SystemCoreClock; + void usbd_dwc2_delay_ms(uint8_t ms) { - + uint32_t count = SystemCoreClock / 1000 * ms; + while (count--) { + __asm volatile("nop"); + } } + #endif diff --git a/port/dwc2/usb_glue_st.c b/port/dwc2/usb_glue_st.c index f29d8915..cabf57d0 100644 --- a/port/dwc2/usb_glue_st.c +++ b/port/dwc2/usb_glue_st.c @@ -217,9 +217,14 @@ uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) #endif } +extern uint32_t SystemCoreClock; + void usbd_dwc2_delay_ms(uint8_t ms) { - HAL_Delay(ms); + uint32_t count = SystemCoreClock / 1000 * ms; + while (count--) { + __asm volatile("nop"); + } } void OTG_FS_IRQHandler(void)