File tree Expand file tree Collapse file tree 1 file changed +4
-2
lines changed
bsp/gd32/arm/libraries/gd32_drivers Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Original file line number Diff line number Diff line change @@ -233,13 +233,14 @@ static void dma_recv_isr (struct rt_serial_device *serial)
233
233
{
234
234
struct gd32_uart * uart ;
235
235
rt_size_t recv_len , counter ;
236
+ rt_base_t level ;
236
237
237
238
RT_ASSERT (serial != RT_NULL );
238
239
uart = rt_container_of (serial , struct gd32_uart , serial );
239
240
240
241
recv_len = 0 ;
242
+ level = rt_hw_interrupt_disable ();
241
243
counter = dma_transfer_number_get (uart -> dma .rx .periph , uart -> dma .rx .channel );
242
-
243
244
if (counter <= uart -> dma .last_index )
244
245
{
245
246
recv_len = uart -> dma .last_index - counter ;
@@ -248,10 +249,11 @@ static void dma_recv_isr (struct rt_serial_device *serial)
248
249
{
249
250
recv_len = serial -> config .rx_bufsz + uart -> dma .last_index - counter ;
250
251
}
252
+ uart -> dma .last_index = counter ;
253
+ rt_hw_interrupt_enable (level );
251
254
252
255
if (recv_len )
253
256
{
254
- uart -> dma .last_index = counter ;
255
257
rt_hw_serial_isr (serial , RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8 ));
256
258
}
257
259
}
You can’t perform that action at this time.
0 commit comments