diff --git a/drivers/AnalogIn.h b/drivers/AnalogIn.h index 38c1fc1..dd5d067 100644 --- a/drivers/AnalogIn.h +++ b/drivers/AnalogIn.h @@ -151,7 +151,9 @@ virtual ~AnalogIn() { - // Do nothing + lock(); + analogin_free(&_adc); + unlock(); } protected: diff --git a/drivers/QSPI.h b/drivers/QSPI.h index 1ef8df2..f98fb45 100644 --- a/drivers/QSPI.h +++ b/drivers/QSPI.h @@ -117,6 +117,9 @@ virtual ~QSPI() { + lock(); + qspi_free(&_qspi); + unlock(); } /** Configure the data transmission format diff --git a/drivers/source/SerialBase.cpp b/drivers/source/SerialBase.cpp index b335f69..40bf7d0 100644 --- a/drivers/source/SerialBase.cpp +++ b/drivers/source/SerialBase.cpp @@ -287,6 +287,10 @@ for (int irq = 0; irq < IrqCnt; irq++) { attach(nullptr, (IrqType)irq); } + + if (_rx_enabled || _tx_enabled) { + serial_free(&_serial); + } } #if DEVICE_SERIAL_FC