Просмотр исходного кода

[Core] RP2040 disable PIO IRQs on serial timeout (#17839)

Stefan Kerkmann 4 лет назад
Родитель
Сommit
a204523bbb
1 измененных файлов с 2 добавлено и 0 удалено
  1. 2 0
      platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c

+ 2 - 0
platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c

@@ -206,6 +206,7 @@ static inline msg_t sync_tx(sysinterval_t timeout) {
         pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, true);
         msg = osalThreadSuspendTimeoutS(&tx_thread, timeout);
         if (msg < MSG_OK) {
+            pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, false);
             break;
         }
     }
@@ -265,6 +266,7 @@ static inline msg_t sync_rx(sysinterval_t timeout) {
         pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, true);
         msg = osalThreadSuspendTimeoutS(&rx_thread, timeout);
         if (msg < MSG_OK) {
+            pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, false);
             break;
         }
     }