From 591550d4daf44b8d89225f5b3690e50f46693ed3 Mon Sep 17 00:00:00 2001 From: Kirill Kotyagin Date: Sun, 1 Aug 2021 18:49:26 +0300 Subject: [PATCH] ADD: force USB re-enumeration on device reset --- usb_io.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/usb_io.c b/usb_io.c index e0bd9cb..4862cd0 100644 --- a/usb_io.c +++ b/usb_io.c @@ -53,6 +53,16 @@ void usb_io_reset() { } void usb_io_init() { + /* Force USB re-enumeration */ + RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; + GPIOA->CRH &= ~GPIO_CRH_CNF12; + GPIOA->CRH |= GPIO_CRH_MODE12_1; + for (int i=0; i<0xFFFF; i++) { + __NOP(); + } + GPIOA->CRH &= ~GPIO_CRH_MODE12; + GPIOA->CRH |= GPIO_CRH_CNF12_0; + /* Initialize USB */ NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); if (SystemCoreClock != RCC_MAX_FREQUENCY) { RCC->CFGR |= RCC_CFGR_USBPRE;