diff options
Diffstat (limited to 'libmaple/usart.c')
-rw-r--r-- | libmaple/usart.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libmaple/usart.c b/libmaple/usart.c index 998da17..0bdc37a 100644 --- a/libmaple/usart.c +++ b/libmaple/usart.c @@ -192,6 +192,22 @@ uint32 usart_tx(usart_dev *dev, const uint8 *buf, uint32 len) { } /** + * @brief Nonblocking USART receive. + * @param dev Serial port to receive bytes from + * @param buf Buffer to store received bytes into + * @param len Maximum number of bytes to store + * @return Number of bytes received + */ +uint32 usart_rx(usart_dev *dev, uint8 *buf, uint32 len) { + uint32 rxed = 0; + while (usart_data_available(dev) && rxed < len) { + *buf++ = usart_getc(dev); + rxed++; + } + return rxed; +} + +/** * @brief Transmit an unsigned integer to the specified serial port in * decimal format. * |