machine/nrf52840: ensure that USB CDC interface is only initialized once

Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
deadprogram 2020-12-28 15:33:09 +01:00 коммит произвёл Ayke
родитель fb0bb69f62
коммит a5ee1ba4b3
8 изменённых файлов: 16 добавлений и 9 удалений

Просмотреть файл

@ -58,7 +58,7 @@ const (
// UART0 is the USB device // UART0 is the USB device
var ( var (
UART0 = USB UART0 = &USB
) )
// I2C pins // I2C pins

Просмотреть файл

@ -105,7 +105,7 @@ const (
// UART0 is the USB device // UART0 is the USB device
var ( var (
UART0 = USB UART0 = &USB
) )
// I2C pins // I2C pins

Просмотреть файл

@ -77,7 +77,7 @@ const (
// UART0 is the USB device // UART0 is the USB device
var ( var (
UART0 = USB UART0 = &USB
) )
// I2C pins // I2C pins

Просмотреть файл

@ -72,7 +72,7 @@ const (
// UART0 is the USB device // UART0 is the USB device
var ( var (
UART0 = USB UART0 = &USB
) )
// I2C pins // I2C pins

Просмотреть файл

@ -41,7 +41,7 @@ const (
// UART // UART
var ( var (
Serial = USB Serial = &USB
UART0 = NRF_UART0 UART0 = NRF_UART0
) )

Просмотреть файл

@ -41,7 +41,7 @@ const (
// UART // UART
var ( var (
Serial = USB Serial = &USB
UART0 = NRF_UART0 UART0 = NRF_UART0
) )

Просмотреть файл

@ -41,7 +41,7 @@ const (
// UART // UART
var ( var (
Serial = USB Serial = &USB
UART0 = NRF_UART0 UART0 = NRF_UART0
) )

Просмотреть файл

@ -12,8 +12,9 @@ import (
// USBCDC is the USB CDC aka serial over USB interface on the nRF52840 // USBCDC is the USB CDC aka serial over USB interface on the nRF52840
type USBCDC struct { type USBCDC struct {
Buffer *RingBuffer Buffer *RingBuffer
interrupt interrupt.Interrupt interrupt interrupt.Interrupt
initcomplete bool
} }
// WriteByte writes a byte of data to the USB CDC interface. // WriteByte writes a byte of data to the USB CDC interface.
@ -87,6 +88,10 @@ func exitCriticalSection() {
// Configure the USB CDC interface. The config is here for compatibility with the UART interface. // Configure the USB CDC interface. The config is here for compatibility with the UART interface.
func (usbcdc *USBCDC) Configure(config UARTConfig) { func (usbcdc *USBCDC) Configure(config UARTConfig) {
if usbcdc.initcomplete {
return
}
// Enable IRQ. Make sure this is higher than the SWI2 interrupt handler so // Enable IRQ. Make sure this is higher than the SWI2 interrupt handler so
// that it is possible to print to the console from a BLE interrupt. You // that it is possible to print to the console from a BLE interrupt. You
// shouldn't generally do that but it is useful for debugging and panic // shouldn't generally do that but it is useful for debugging and panic
@ -107,6 +112,8 @@ func (usbcdc *USBCDC) Configure(config UARTConfig) {
) )
nrf.USBD.USBPULLUP.Set(0) nrf.USBD.USBPULLUP.Set(0)
usbcdc.initcomplete = true
} }
func (usbcdc *USBCDC) handleInterrupt(interrupt.Interrupt) { func (usbcdc *USBCDC) handleInterrupt(interrupt.Interrupt) {