diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index 894470d..44ad460 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -159,10 +159,11 @@ void HardwareSerial::end(void) { */ int HardwareSerial::read(void) { - // Block until a byte becomes available, to save user confusion. - while (!this->available()) - ; - return usart_getc(this->usart_device); + if(usart_data_available(usart_device) > 0) { + return usart_getc(usart_device); + } else { + return -1; + } } int HardwareSerial::available(void) { diff --git a/STM32F3/cores/maple/wirish/HardwareSerial.cpp b/STM32F3/cores/maple/wirish/HardwareSerial.cpp index c4cb5f8..87f80d1 100644 --- a/STM32F3/cores/maple/wirish/HardwareSerial.cpp +++ b/STM32F3/cores/maple/wirish/HardwareSerial.cpp @@ -118,11 +118,12 @@ void HardwareSerial::end(void) { * I/O */ -uint8 HardwareSerial::read(void) { - // Block until a byte becomes available, to save user confusion. - while (!this->available()) - ; - return usart_getc(this->usart_device); +int HardwareSerial::read(void) { + if(usart_data_available(usart_device) > 0) { + return usart_getc(usart_device); + } else { + return -1; + } } uint32 HardwareSerial::available(void) { diff --git a/STM32F3/cores/maple/wirish/HardwareSerial.h b/STM32F3/cores/maple/wirish/HardwareSerial.h index f25362b..260a99e 100644 --- a/STM32F3/cores/maple/wirish/HardwareSerial.h +++ b/STM32F3/cores/maple/wirish/HardwareSerial.h @@ -62,7 +62,7 @@ public: /* I/O */ uint32 available(void); - uint8 read(void); + int read(void); void flush(void); virtual void write(unsigned char); using Print::write;