diff options
Diffstat (limited to 'bsp/ls1cdev/drivers/drv_uart.c')
| -rw-r--r-- | bsp/ls1cdev/drivers/drv_uart.c | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/bsp/ls1cdev/drivers/drv_uart.c b/bsp/ls1cdev/drivers/drv_uart.c index 3466c07bd3..de0fe1f852 100644 --- a/bsp/ls1cdev/drivers/drv_uart.c +++ b/bsp/ls1cdev/drivers/drv_uart.c @@ -32,102 +32,102 @@ struct rt_uart_ls1c { ls1c_uart_t UARTx; - rt_uint32_t IRQ; + rt_uint32_t IRQ; }; static rt_err_t ls1c_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) { - struct rt_uart_ls1c *uart_dev = RT_NULL; - ls1c_uart_info_t uart_info = {0}; + struct rt_uart_ls1c *uart_dev = RT_NULL; + ls1c_uart_info_t uart_info = {0}; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); - uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; - // 初始化串口 - uart_info.UARTx = uart_dev->UARTx; - uart_info.baudrate = cfg->baud_rate; - uart_info.rx_enable= TRUE; + // 初始化串口 + uart_info.UARTx = uart_dev->UARTx; + uart_info.baudrate = cfg->baud_rate; + uart_info.rx_enable = TRUE; uart_init(&uart_info); - return RT_EOK; + return RT_EOK; } static rt_err_t ls1c_uart_control(struct rt_serial_device *serial, int cmd, void *arg) { - struct rt_uart_ls1c *uart_dev = RT_NULL; - - RT_ASSERT(serial != RT_NULL); - uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + struct rt_uart_ls1c *uart_dev = RT_NULL; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: /* disable rx irq */ + RT_ASSERT(serial != RT_NULL); + uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: /* disable rx irq */ rt_hw_interrupt_mask(uart_dev->IRQ); - break; + break; - case RT_DEVICE_CTRL_SET_INT: /* enable rx irq */ - rt_hw_interrupt_umask(uart_dev->IRQ); - break; + case RT_DEVICE_CTRL_SET_INT: /* enable rx irq */ + rt_hw_interrupt_umask(uart_dev->IRQ); + break; - default: - break; - } + default: + break; + } - return RT_EOK; + return RT_EOK; } static int ls1c_uart_putc(struct rt_serial_device *serial, char c) { - struct rt_uart_ls1c *uart_dev = RT_NULL; - - RT_ASSERT(serial != RT_NULL); + struct rt_uart_ls1c *uart_dev = RT_NULL; + + RT_ASSERT(serial != RT_NULL); - uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; - uart_putc(uart_dev->UARTx, c); + uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + uart_putc(uart_dev->UARTx, c); - return 1; + return 1; } static int ls1c_uart_getc(struct rt_serial_device *serial) { - struct rt_uart_ls1c *uart_dev = RT_NULL; - - RT_ASSERT(serial != RT_NULL); - - uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; - void *uart_base = uart_get_base(uart_dev->UARTx); + struct rt_uart_ls1c *uart_dev = RT_NULL; + + RT_ASSERT(serial != RT_NULL); - if(LSR_RXRDY & reg_read_8(uart_base + LS1C_UART_LSR_OFFSET)) - { - return reg_read_8(uart_base + LS1C_UART_DAT_OFFSET); - } + uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + void *uart_base = uart_get_base(uart_dev->UARTx); - return -1; + if (LSR_RXRDY & reg_read_8(uart_base + LS1C_UART_LSR_OFFSET)) + { + return reg_read_8(uart_base + LS1C_UART_DAT_OFFSET); + } + + return -1; } /* UART interrupt handler */ static void uart_irq_handler(int vector, void *param) { - struct rt_serial_device *serial = (struct rt_serial_device*)param; - struct rt_uart_ls1c *uart_dev = RT_NULL; - - RT_ASSERT(serial != RT_NULL); + struct rt_serial_device *serial = (struct rt_serial_device *)param; + struct rt_uart_ls1c *uart_dev = RT_NULL; + + RT_ASSERT(serial != RT_NULL); - uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; - void *uart_base = uart_get_base(uart_dev->UARTx); - unsigned char iir = reg_read_8(uart_base + LS1C_UART_IIR_OFFSET); + uart_dev = (struct rt_uart_ls1c *)serial->parent.user_data; + void *uart_base = uart_get_base(uart_dev->UARTx); + unsigned char iir = reg_read_8(uart_base + LS1C_UART_IIR_OFFSET); - // 判断是否为接收超时或接收到有效数据 - if ((IIR_RXTOUT & iir) || (IIR_RXRDY & iir)) - { - rt_interrupt_enter(); - rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); - rt_interrupt_leave(); - } + // 判断是否为接收超时或接收到有效数据 + if ((IIR_RXTOUT & iir) || (IIR_RXRDY & iir)) + { + rt_interrupt_enter(); + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); + rt_interrupt_leave(); + } } @@ -159,12 +159,12 @@ void rt_hw_uart_init(void) serial2.ops = &stm32_uart_ops; serial2.config = config; - pin_set_purpose(36, PIN_PURPOSE_OTHER); - pin_set_purpose(37, PIN_PURPOSE_OTHER); - pin_set_remap(36, PIN_REMAP_SECOND); - pin_set_remap(37, PIN_REMAP_SECOND); + pin_set_purpose(36, PIN_PURPOSE_OTHER); + pin_set_purpose(37, PIN_PURPOSE_OTHER); + pin_set_remap(36, PIN_REMAP_SECOND); + pin_set_remap(37, PIN_REMAP_SECOND); - rt_hw_interrupt_install(uart->IRQ, uart_irq_handler, &serial2, "UART2"); + rt_hw_interrupt_install(uart->IRQ, uart_irq_handler, &serial2, "UART2"); /* register UART1 device */ rt_hw_serial_register(&serial2, |
