diff --git a/ports/raspberrypi/common-hal/busio/UART.c b/ports/raspberrypi/common-hal/busio/UART.c index 14935f4046..0e25c57297 100644 --- a/ports/raspberrypi/common-hal/busio/UART.c +++ b/ports/raspberrypi/common-hal/busio/UART.c @@ -120,14 +120,14 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, if (uart_status[uart_id] != STATUS_FREE) { mp_raise_RuntimeError(translate("All UART peripherals are in use")); - } else { - uart_status[uart_id] = STATUS_BUSY; } - + // These may raise exceptions if pins are already in use. self->tx_pin = pin_init(uart_id, tx, 0); self->rx_pin = pin_init(uart_id, rx, 1); self->cts_pin = pin_init(uart_id, cts, 2); self->rts_pin = pin_init(uart_id, rts, 3); + uart_status[uart_id] = STATUS_BUSY; + self->uart = UART_INST(uart_id); self->uart_id = uart_id;