@@ -253,8 +253,6 @@ static void ARDUINO_ISR_ATTR cdc0_write_char(char c) {
253
253
}
254
254
255
255
HWCDC::HWCDC () {
256
- perimanSetBusDeinit (ESP32_BUS_TYPE_USB_DM, HWCDC::deinit);
257
- perimanSetBusDeinit (ESP32_BUS_TYPE_USB_DP, HWCDC::deinit);
258
256
// SOF in ISR causes problems for uploading firmware
259
257
// lastSOF_ms = 0;
260
258
// SOF_TIMEOUT = 5;
@@ -323,15 +321,19 @@ void HWCDC::begin(unsigned long baud) {
323
321
// delay(10); // USB Host has to enumerate it again
324
322
325
323
// Peripheral Manager setting for USB D+ D- pins
326
- uint8_t pin = USB_INT_PHY0_DM_GPIO_NUM;
327
- if (!perimanSetPinBus (pin, ESP32_BUS_TYPE_USB_DM, (void *)this , -1 , -1 )) {
324
+ // Peripheral Manager setting for USB D+ D- pins
325
+ if (perimanGetBusDeinit (ESP32_BUS_TYPE_USB_DM) == NULL ) {
326
+ perimanSetBusDeinit (ESP32_BUS_TYPE_USB_DM, HWCDC::deinit);
327
+ }
328
+ if (!perimanSetPinBus (USB_INT_PHY0_DM_GPIO_NUM, ESP32_BUS_TYPE_USB_DM, (void *)this , -1 , -1 )) {
328
329
goto err;
329
330
}
330
- pin = USB_INT_PHY0_DP_GPIO_NUM;
331
- if (!perimanSetPinBus (pin, ESP32_BUS_TYPE_USB_DP, (void *)this , -1 , -1 )) {
331
+ if (perimanGetBusDeinit (ESP32_BUS_TYPE_USB_DP) == NULL ) {
332
+ perimanSetBusDeinit (ESP32_BUS_TYPE_USB_DP, HWCDC::deinit);
333
+ }
334
+ if (!perimanSetPinBus (USB_INT_PHY0_DP_GPIO_NUM, ESP32_BUS_TYPE_USB_DP, (void *)this , -1 , -1 )) {
332
335
goto err;
333
336
}
334
-
335
337
// Configure PHY
336
338
// USB_Serial_JTAG use internal PHY
337
339
USB_SERIAL_JTAG.conf0 .phy_sel = 0 ;
0 commit comments