summaryrefslogtreecommitdiff
path: root/bsp/raspberry-pico
diff options
context:
space:
mode:
authorguozhanxin <[email protected]>2021-02-24 11:00:51 +0800
committerguozhanxin <[email protected]>2021-02-24 11:04:35 +0800
commit05ce4e67c32e0685e72864aa0c1b9a6e89172509 (patch)
tree56ce1e970c9f17aa115d8a1b37f130a9c6a1ff04 /bsp/raspberry-pico
parentc0331c5838a37f6ba58b62601179b23a4483efe9 (diff)
[bsp][raspberry-pico] Fixed failure to start without connecting to UART
Diffstat (limited to 'bsp/raspberry-pico')
-rw-r--r--bsp/raspberry-pico/drivers/drv_uart.c29
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;