summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/drivers/serial/serial.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c
index 1de1331344..5365026724 100644
--- a/components/drivers/serial/serial.c
+++ b/components/drivers/serial/serial.c
@@ -421,7 +421,6 @@ static void rt_dma_recv_update_put_index(struct rt_serial_device *serial, rt_siz
/* force overwrite get index */
if (rx_fifo->put_index >= rx_fifo->get_index)
{
- rx_fifo->get_index = rx_fifo->put_index;
rx_fifo->is_full = RT_TRUE;
}
}
@@ -437,10 +436,15 @@ static void rt_dma_recv_update_put_index(struct rt_serial_device *serial, rt_siz
rx_fifo->put_index %= serial->config.bufsz;
}
/* force overwrite get index */
- rx_fifo->get_index = rx_fifo->put_index;
rx_fifo->is_full = RT_TRUE;
}
}
+
+ if(rx_fifo->is_full == RT_TRUE)
+ {
+ rx_fifo->get_index = rx_fifo->put_index;
+ }
+
if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0;
}