diff options
| author | Damien George <damien.p.george@gmail.com> | 2018-12-30 01:03:22 +1100 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2018-12-30 01:03:22 +1100 |
| commit | f334816df0b20f1d77973ebd98342c681b1b8bf5 (patch) | |
| tree | 4b4d61cf846fa552ab7b5dd0cbafbace44473072 | |
| parent | 7bdbea9a0ce99fd934c8f5f9d0eba7b1cf458567 (diff) | |
stm32/uart: Make sure user IRQs are handled even with a keyboard intr.
| -rw-r--r-- | ports/stm32/uart.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ports/stm32/uart.c b/ports/stm32/uart.c index 5071fed44..e514709b7 100644 --- a/ports/stm32/uart.c +++ b/ports/stm32/uart.c @@ -729,17 +729,17 @@ void uart_irq_handler(mp_uint_t uart_id) { int data = self->uartx->DR; // clears UART_FLAG_RXNE #endif data &= self->char_mask; - // Handle interrupt coming in on a UART REPL if (self->attached_to_repl && data == mp_interrupt_char) { + // Handle interrupt coming in on a UART REPL pendsv_kbd_intr(); - return; - } - if (self->char_width == CHAR_WIDTH_9BIT) { - ((uint16_t*)self->read_buf)[self->read_buf_head] = data; } else { - self->read_buf[self->read_buf_head] = data; + if (self->char_width == CHAR_WIDTH_9BIT) { + ((uint16_t*)self->read_buf)[self->read_buf_head] = data; + } else { + self->read_buf[self->read_buf_head] = data; + } + self->read_buf_head = next_head; } - self->read_buf_head = next_head; } else { // No room: leave char in buf, disable interrupt UART_RXNE_IT_DIS(self->uartx); } |
