diff options
| author | Bernard Xiong <[email protected]> | 2021-02-24 11:22:58 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-02-24 11:22:58 +0800 |
| commit | 06e01da1d55b029818d151c71dc0d46c710d7485 (patch) | |
| tree | 56ce1e970c9f17aa115d8a1b37f130a9c6a1ff04 | |
| parent | c0331c5838a37f6ba58b62601179b23a4483efe9 (diff) | |
| parent | 05ce4e67c32e0685e72864aa0c1b9a6e89172509 (diff) | |
Merge pull request #4380 from Guozhanxin/raspberry-pico
[bsp][raspberry-pico] Fixed failure to start without connecting to UART
| -rw-r--r-- | bsp/raspberry-pico/drivers/drv_uart.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/bsp/raspberry-pico/drivers/drv_uart.c b/bsp/raspberry-pico/drivers/drv_uart.c index 48599e01f8..925968f6d7 100644 --- a/bsp/raspberry-pico/drivers/drv_uart.c +++ b/bsp/raspberry-pico/drivers/drv_uart.c @@ -60,6 +60,23 @@ static rt_err_t pico_uart_configure(struct rt_serial_device *serial, struct seri static rt_err_t pico_uart_control(struct rt_serial_device *serial, int cmd, void *arg) { + // Select correct interrupt for the UART we are using + int UART_IRQ = UART_ID == uart0 ? UART0_IRQ : UART1_IRQ; + + switch (cmd) + { + /* enable interrupt */ + case RT_DEVICE_CTRL_SET_INT: + // Set up a RX interrupt + // We need to set up the handler first + // And set up and enable the interrupt handlers + irq_set_exclusive_handler(UART_IRQ, pico_uart_isr); + irq_set_enabled(UART_IRQ, true); + + // Now enable the UART to send interrupts - RX only + uart_set_irq_enables(UART_ID, true, false); + break; + } return RT_EOK; } @@ -125,18 +142,6 @@ int rt_hw_uart_init(void) // Turn off FIFO's - we want to do this character by character uart_set_fifo_enabled(UART_ID, false); - // Set up a RX interrupt - // We need to set up the handler first - // Select correct interrupt for the UART we are using - int UART_IRQ = UART_ID == uart0 ? UART0_IRQ : UART1_IRQ; - - // And set up and enable the interrupt handlers - irq_set_exclusive_handler(UART_IRQ, pico_uart_isr); - irq_set_enabled(UART_IRQ, true); - - // Now enable the UART to send interrupts - RX only - uart_set_irq_enables(UART_ID, true, false); - uart0_dev.parent.ops = &_uart_ops; uart0_dev.parent.config = config; |
