From 05ce4e67c32e0685e72864aa0c1b9a6e89172509 Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Wed, 24 Feb 2021 11:00:51 +0800 Subject: [PATCH] [bsp][raspberry-pico] Fixed failure to start without connecting to UART --- bsp/raspberry-pico/drivers/drv_uart.c | 29 ++++++++++++++++----------- 1 file 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;