From 1a4f66badedd4cd35b948f30f3e67833fd68d468 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Wed, 10 Jun 2020 11:17:17 +0200 Subject: [PATCH] [SoftwareSerial] Fix analog pins usage Fix #1093 Signed-off-by: Frederic Pillon --- libraries/SoftwareSerial/src/SoftwareSerial.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/SoftwareSerial/src/SoftwareSerial.cpp b/libraries/SoftwareSerial/src/SoftwareSerial.cpp index 00a37c0701..e4a5a7c047 100644 --- a/libraries/SoftwareSerial/src/SoftwareSerial.cpp +++ b/libraries/SoftwareSerial/src/SoftwareSerial.cpp @@ -317,12 +317,12 @@ SoftwareSerial::SoftwareSerial(uint16_t receivePin, uint16_t transmitPin, bool i _receive_buffer_tail(0), _receive_buffer_head(0) { - if ((receivePin < NUM_DIGITAL_PINS) || (transmitPin < NUM_DIGITAL_PINS)) { - /* Enable GPIO clock for tx and rx pin*/ - set_GPIO_Port_Clock(STM_PORT(digitalPinToPinName(transmitPin))); - set_GPIO_Port_Clock(STM_PORT(digitalPinToPinName(receivePin))); - } else { - _Error_Handler("ERROR: invalid pin number\n", -1); + /* Enable GPIO clock for tx and rx pin*/ + if (set_GPIO_Port_Clock(STM_PORT(digitalPinToPinName(transmitPin))) == 0) { + _Error_Handler("ERROR: invalid transmit pin number\n", -1); + } + if ((!_half_duplex) && (set_GPIO_Port_Clock(STM_PORT(digitalPinToPinName(receivePin))) == 0)) { + _Error_Handler("ERROR: invalid receive pin number\n", -1); } } @@ -421,4 +421,4 @@ int SoftwareSerial::peek() void SoftwareSerial::setInterruptPriority(uint32_t preemptPriority, uint32_t subPriority) { timer.setInterruptPriority(preemptPriority, subPriority); -} \ No newline at end of file +}