浏览代码

[bsp][raspberry-pico] Fixed failure to start without connecting to UART

guozhanxin 4 年之前
父节点
当前提交
05ce4e67c3
共有 1 个文件被更改,包括 17 次插入12 次删除
  1. 17 12
      bsp/raspberry-pico/drivers/drv_uart.c

+ 17 - 12
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;