int rt_hw_uart_init(void) { DEV_UART_PTR uart; struct serial_configure config; int ret; config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; _emsk_uart0.ops = &_emsk_uart0_ops; _emsk_uart0.config = config; _emsk_uart1.ops = &_emsk_uart1_ops; _emsk_uart1.config = config; /* open UART1 for USB-UART interface */ uart = uart_get_dev(DW_UART_1_ID); /* default format: 8bits, no parity, 1 stop bits */ ret = uart->uart_open(config.baud_rate); if (ret != E_OPNED && ret != E_OK) { return RT_ERROR; } /* enable rx int */ uart->uart_control(UART_CMD_SET_RXINT, (void *)1); /* use customized int isr */ uart->uart_control(UART_CMD_SET_RXCB, _emsk_uart1_isr); uart->uart_control(UART_CMD_SET_RXINT_BUF, NULL); rt_hw_serial_register(&_emsk_uart1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, (void *)DW_UART_1_ID); /* open UART0 in PMOD A*/ uart = uart_get_dev(DW_UART_0_ID); /* default format: 8bits, no parity, 1 stop bits */ ret = uart->uart_open(config.baud_rate); if (ret != E_OPNED && ret != E_OK) { return RT_ERROR; } /* enable rx int */ uart->uart_control(UART_CMD_SET_RXINT, (void *)1); /* use customized int isr */ uart->uart_control(UART_CMD_SET_RXCB, _emsk_uart0_isr); uart->uart_control(UART_CMD_SET_RXINT_BUF, NULL); rt_hw_serial_register(&_emsk_uart0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, (void *)DW_UART_0_ID); return RT_EOK; }
int rt_hw_uart_init(void) { struct mm32_uart *uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #ifdef BSP_USING_UART1 UART1PINconfigStepA(); uart = &uart1; uart->uart = UART1; uart->irq = UART1_IRQn; config.baud_rate = BAUD_RATE_115200; serial1.ops = &mm32_uart_ops; serial1.config = config; /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); UART1PINconfigStepB(); #endif /* BSP_USING_UART1 */ #ifdef BSP_USING_UART2 UART2PINconfigStepA(); uart = &uart2; uart->uart = UART2; uart->irq = UART2_IRQn; config.baud_rate = BAUD_RATE_115200; serial2.ops = &mm32_uart_ops; serial2.config = config; /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); UART2PINconfigStepB(); #endif /* BSP_USING_UART2 */ return 0; }
int stm32_hw_usart_init(void) { struct stm32_uart *uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #ifdef RT_USING_UART1 uart = &uart1; uart->UartHandle.Instance = USART1; serial1.ops = &stm32_uart_ops; serial1.config = config; /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART1 */ #ifdef RT_USING_UART3 uart = &uart3; uart->UartHandle.Instance = USART3; serial3.ops = &stm32_uart_ops; serial3.config = config; /* register UART3 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART3 */ return 0; }
void rt_hw_usart_init(void) { struct stm32_uart* uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; RCC_Configuration(); GPIO_Configuration(); #ifdef RT_USING_UART1 uart = &uart1; config.baud_rate = BAUD_RATE_115200; serial1.ops = &stm32_uart_ops; serial1.int_rx = &uart1_int_rx; serial1.config = config; NVIC_Configuration(&uart1); /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); #endif /* RT_USING_UART1 */ #ifdef RT_USING_UART2 uart = &uart2; config.baud_rate = BAUD_RATE_115200; serial2.ops = &stm32_uart_ops; serial2.int_rx = &uart2_int_rx; serial2.config = config; NVIC_Configuration(&uart2); /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART2 */ #ifdef RT_USING_UART3 uart = &uart3; config.baud_rate = BAUD_RATE_115200; serial3.ops = &stm32_uart_ops; serial3.int_rx = &uart3_int_rx; serial3.config = config; NVIC_Configuration(&uart3); /* register UART1 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART3 */ }
int stm32_hw_usart_init(void) { struct stm32_uart *uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; RCC_Configuration(); GPIO_Configuration(); #ifdef RT_USING_UART1 uart = &uart1; serial1.ops = &stm32_uart_ops; serial1.config = config; NVIC_Configuration(&uart1); /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART1 */ #ifdef RT_USING_UART2 uart = &uart2; serial2.ops = &stm32_uart_ops; serial2.config = config; NVIC_Configuration(&uart2); /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART2 */ #ifdef RT_USING_UART3 uart = &uart3; serial3.ops = &stm32_uart_ops; serial3.config = config; NVIC_Configuration(&uart3); /* register UART3 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART3 */ return 0; }
int uart_console_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; struct console_uart* uart; struct rt_serial_device* serial; uart = &_console_uart; serial = &_serial; uart->rx_ready = 0; serial->ops = &console_uart_ops; serial->config = config; /* initialize ring buffer */ rt_ringbuffer_init(&uart->rb, uart->rx_buffer, sizeof(uart->rx_buffer)); /* register UART device */ rt_hw_serial_register(serial, "console", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); console_lowlevel_init(); return 0; }
static void rt_usb_vcom_init(struct ufunction *func) { rt_err_t result = RT_EOK; struct serial_configure config; struct vcom *data = (struct vcom*)func->user_data; /* initialize ring buffer */ rt_ringbuffer_init(&data->rx_ringbuffer, data->rx_rbp, CDC_RX_BUFSIZE); config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; data->serial.ops = &usb_vcom_ops; data->serial.int_rx = &data->vcom_int_rx; data->serial.config = config; /* register vcom device */ rt_hw_serial_register(&data->serial, VCOM_DEVICE, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX, func); /* create an vcom message queue */ rt_mq_init(&vcom_tx_thread_mq, "vcomq", vcom_tx_thread_mq_pool, VCOM_MQ_MSG_SZ, sizeof(vcom_tx_thread_mq_pool), RT_IPC_FLAG_FIFO); /* init usb device thread */ rt_thread_init(&vcom_thread, "vcom", vcom_tx_thread_entry, RT_NULL, vcom_thread_stack, 512, 8, 20); result = rt_thread_startup(&vcom_thread); RT_ASSERT(result == RT_EOK); }
/** * This function will handle init uart */ void rt_hw_uart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #if defined(RT_USING_UART0) #if(0) serial0.ops = &fh_uart_ops; serial0.config = config; /* register vcom device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM | RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_STANDALONE, &uart0); rt_hw_interrupt_install(uart0.irq, rt_fh_uart_handler, (void *)&(serial0.parent), "UART0"); rt_hw_interrupt_umask(uart0.irq); #endif serial0.ops = &fh_uart_ops; serial0.config = config; /* register vcom device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM , &uart0); rt_hw_interrupt_install(uart0.irq, rt_fh_uart_handler, (void *)&(serial0.parent), "UART0"); rt_hw_interrupt_umask(uart0.irq); #endif #if defined(RT_USING_UART1) serial1.ops = &fh_uart_ops; serial1.config = config; /* register vcom device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM , &uart1); rt_hw_interrupt_install(uart1.irq, rt_fh_uart_handler, (void *)&(serial1.parent), "UART1"); rt_hw_interrupt_umask(uart1.irq); #endif }
void rt_hw_uart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; config.bufsz = RT_SERIAL_RB_BUFSZ; _serial0_0.config = config; _serial0_0.ops = &_uart_ops; uart0.serial = &_serial0_0; rt_hw_serial_register(&_serial0_0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart0); #if USE_UART0_1 config.bufsz = UART0_RB_SIZE; _serial0_1.config = config; _serial0_1.ops = &_uart_ops; uart1.serial = &_serial0_1; rt_hw_serial_register(&_serial0_1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart1); #endif }
/* * UART Initiation */ int rt_hw_uart_init(void) { struct rt_serial_device *serial; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #ifdef RT_USING_UART0 { struct device_uart *uart; serial = &serial0; uart = &uart0; /* Init UART Hardware */ serial_init(&uart->serial, UART_TX, UART_RX); serial->ops = &_uart_ops; serial->config = config; serial->config.baud_rate = 115200; uart->irqno = UART0_IRQ; rt_hw_serial_register(serial, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); } #endif { serial = &ameba_dbg_serial; serial->ops = &_ambed_dbg_ops; serial->config = config; rt_hw_serial_register(serial, RT_CONSOLE_DEVICE_NAME, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, RT_NULL); } return 0; }
/** * This function will handle init uart */ int rt_hw_uart_init(void) { asm_usart_gpio_init(); #if defined(RT_USING_UART0) Hw_UartInit(0); asm_serial_config_set_default(&serial0); /* register uart device */ rt_hw_serial_register(&serial0, "uart0", DRV_REG_OPS, &uart0); rt_hw_interrupt_install(uart0.irq, rt_asm_usart_handler, (void *)&(serial0.parent), "UART0"); rt_hw_interrupt_umask(uart0.irq); #endif #if defined(RT_USING_UART3) Hw_UartInit(3); asm_serial_config_set_default(&serial3); /* register uart device */ rt_hw_serial_register(&serial3, "uart3", DRV_REG_OPS, &uart3); rt_hw_interrupt_install(uart3.irq, rt_asm_usart_handler, (void *)&(serial3.parent), "UART3"); rt_hw_interrupt_umask(uart3.irq); #endif #if defined(RT_USING_UART4) Hw_UartInit(4); asm_serial_config_set_default(&serial4); /* register uart device */ rt_hw_serial_register(&serial4, "uart4", DRV_REG_OPS, &uart4); rt_hw_interrupt_install(uart4.irq, rt_asm_usart_handler, (void *)&(serial4.parent), "UART4"); rt_hw_interrupt_umask(uart4.irq); #endif return 0; }
void rt_hw_usart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; config.baud_rate = BAUD_RATE_115200; serial1.ops = &stm32_uart_ops; serial1.config = config; /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, NULL); }
void rt_hw_usart_init(void) { struct uart_device *uartDev = RT_NULL; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #if RT_USING_UART01 uart = &uartDev01; config.baud_rate = BAUD_RATE_38400; serial01.ops = &__uart_ops; serial01.config = config; // set interrupt priority level // disable interrupt // register UART01 device rt_hw_serial_register(&serial01, "uart01", RT_DEVICE_FLAG_RDWR /*| RT_DEVICE_FLAG_INT_RX*/, uartDev); #endif /* RT_USING_UART01 */ #if RT_USING_UART02 uartDev = &uartDev02; config.baud_rate = BAUD_RATE_38400; serial02.ops = &__uart_ops; serial02.config = config; // set interrupt priority level // disable interrupt /* register UART02 device */ rt_hw_serial_register(&serial02, "uart02", RT_DEVICE_FLAG_RDWR /*| RT_DEVICE_FLAG_INT_RX*/, uartDev); #endif /* RT_USING_UART02 */ }
int rt_hw_uart_init(void) { struct CME_M7_uart* uart; struct rt_serial_device *serial; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #ifdef RT_USING_UART0 uart = &uart0; serial = &serial0; serial->ops = &CME_M7_uart_ops; serial->config = config; /* register UART device */ rt_hw_serial_register(serial, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART0 */ #ifdef RT_USING_UART2 uart = &uart2; serial = &serial2; serial->ops = &CME_M7_uart_ops; serial->config = config; /* register UART device */ rt_hw_serial_register(serial, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART2 */ return RT_EOK; }
void rt_hw_usart1_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; serial_device.ops = &usart_ops; serial_device.int_rx = &serial_int_rx; serial_device.int_tx = &serial_int_tx; serial_device.config = config; configure(&serial_device, &config); /* register USART1 device */ rt_hw_serial_register(&serial_device, "serial1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_TX, (void*)0 ); }
void rt_hw_uart_init(void) { struct lpc_uart *uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; uart = &uart0; serial0.ops = &lpc_uart_ops; serial0.config = config; serial0.parent.user_data = uart; /* Enable IOCON clock Then your cfg will effective P38 */ LPC_SYSCON->AHBCLKCTRLSET[0] = (1UL << 13); /* Setup UART TX,RX Pin configuration cfg Pin as Tx, Rx */ /* P63,P77 Selects pin function 1 IOCON_FUNC1 No addition pin function IOCON_MODE_INACT Enables digital function by setting 1 to bit 7(default) IOCON_DIGITAL_EN */ LPC_IOCON->PIO[0][0] = (0x1 | (0x0 << 3) | (0x1 << 7)); LPC_IOCON->PIO[0][1] = (0x1 | (0x0 << 3) | (0x1 << 7)); /* Enable asynchronous APB bridge and subsystem P30 */ LPC_SYSCON->ASYNCAPBCTRL = 0x01; /* The UART clock rate is the main system clock divided by this value P59 */ LPC_ASYNC_SYSCON->ASYNCCLKDIV = 1; /* Set Async clock divider to 1 */ /* Enable peripheral clock(asynchronous APB) to UART0 P57*/ LPC_ASYNC_SYSCON->ASYNCAPBCLKCTRLSET = (1 << 0x01); /* Controls the clock for the Fractional Rate Generator used with the USARTs P57*/ LPC_ASYNC_SYSCON->ASYNCAPBCLKCTRLSET = (1 << 0x0F); /* Enable clock to Fractional divider */ /* preemption = 1, sub-priority = 1 */ NVIC_SetPriority(uart->UART_IRQn, ((0x01 << 3) | 0x01)); /* Enable Interrupt for UART channel */ NVIC_EnableIRQ(uart->UART_IRQn); /* register UART0 device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); }
int gd32_hw_usart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; int i; for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++) { uarts[i].serial->ops = &gd32_uart_ops; uarts[i].serial->config = config; /* register UART device */ rt_hw_serial_register(uarts[i].serial, uarts[i].device_name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, (void *)&uarts[i]); } return 0; }
int hw_usart_init(void) { struct drv_uart *uart; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; #ifdef RT_USING_UART2 uart = &uart2; uart->UartHandle.Instance = USART2; serial2.ops = &drv_uart_ops; serial2.config = config; /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART1 */ return 0; }
void rt_hw_uart_init(void) { struct lpc_uart *uart; struct serial_configure config; #ifdef RT_USING_UART0 uart = &uart0; config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; serial0.ops = &lpc_uart_ops; serial0.int_rx = &uart0_int_rx; serial0.config = config; /* * Initialize UART0 pin connect * P0.2: U0_TXD * P0.3: U0_RXD */ // PINSEL_ConfigPin(0, 2, 1); // PINSEL_ConfigPin(0, 3, 1); /* preemption = 1, sub-priority = 1 */ // NVIC_SetPriority(uart->UART_IRQn, ((0x01 << 3) | 0x01)); /* Enable Interrupt for UART channel */ // NVIC_EnableIRQ(uart->UART_IRQn); /* register UART1 device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); #endif }
int imxrt_hw_uart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; int i; /* Configure UART divider to default */ CLOCK_SetMux(kCLOCK_UartMux, 0); /* Set UART source to PLL3 80M */ CLOCK_SetDiv(kCLOCK_UartDiv, 0); /* Set UART divider to 1 */ for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++) { uarts[i].serial->ops = &imxrt_uart_ops; uarts[i].serial->config = config; /* register UART device */ rt_hw_serial_register(uarts[i].serial, uarts[i].device_name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, (void *)&uarts[i]); } return 0; }
void rt_usb_serial_init(void) { struct serial_configure config; /* initialize ring buffer */ rt_ringbuffer_init(&rx_ringbuffer, rx_rbp, CDC_RX_BUFSIZE); rt_ringbuffer_init(&tx_ringbuffer, tx_rbp, CDC_TX_BUFSIZE); config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; vcom_serial.ops = &usb_vcom_ops; vcom_serial.int_rx = &vcom_int_rx; vcom_serial.config = config; /* register vcom device */ rt_hw_serial_register(&vcom_serial, "vcom", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, RT_NULL); }
int rt_hw_serial_init(void) { struct serial_configure config; poweron_per_domain(); start_uart_clk(); config_pinmux(); #ifdef RT_USING_UART0 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial0.ops = &am33xx_uart_ops; serial0.config = config; /* enable RX interrupt */ UART_IER_REG(uart0.base) = 0x01; /* install ISR */ rt_hw_interrupt_install(uart0.irq, am33xx_uart_isr, &serial0, "uart0"); rt_hw_interrupt_control(uart0.irq, 0, 0); rt_hw_interrupt_mask(uart0.irq); /* register UART0 device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart0); #endif #ifdef RT_USING_UART1 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial1.ops = &am33xx_uart_ops; serial1.config = config; /* enable RX interrupt */ UART_IER_REG(uart1.base) = 0x01; /* install ISR */ rt_hw_interrupt_install(uart1.irq, am33xx_uart_isr, &serial1, "uart1"); rt_hw_interrupt_control(uart1.irq, 0, 0); rt_hw_interrupt_mask(uart1.irq); /* register UART0 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart1); #endif #ifdef RT_USING_UART2 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &am33xx_uart_ops; serial2.config = config; /* enable RX interrupt */ UART_IER_REG(uart2.base) = 0x01; /* install ISR */ rt_hw_interrupt_install(uart2.irq, am33xx_uart_isr, &serial2, "uart2"); rt_hw_interrupt_control(uart2.irq, 0, 0); rt_hw_interrupt_mask(uart2.irq); /* register UART2 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart2); #endif #ifdef RT_USING_UART3 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial3.ops = &am33xx_uart_ops; serial3.config = config; /* enable RX interrupt */ UART_IER_REG(uart3.base) = 0x01; /* install ISR */ rt_hw_interrupt_install(uart3.irq, am33xx_uart_isr, &serial3, "uart3"); rt_hw_interrupt_control(uart3.irq, 0, 0); rt_hw_interrupt_mask(uart3.irq); /* register UART3 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart3); #endif #ifdef RT_USING_UART4 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial4.ops = &am33xx_gdb_ops; serial4.config = config; /* enable RX interrupt */ UART_IER_REG(uart4.base) = 0x00; /* install ISR */ rt_hw_interrupt_install(uart4.irq, am33xx_uart_isr, &serial4, "uart4"); rt_hw_interrupt_control(uart4.irq, 0, 0); rt_hw_interrupt_mask(uart4.irq); /* register UART4 device */ rt_hw_serial_register(&serial4, "uart4", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM, &uart4); #endif #ifdef RT_USING_UART5 config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial5.ops = &am33xx_uart_ops; serial5.config = config; /* enable RX interrupt */ UART_IER_REG(uart5.base) = 0x01; /* install ISR */ rt_hw_interrupt_install(uart5.irq, am33xx_uart_isr, &serial5, "uart5"); rt_hw_interrupt_control(uart5.irq, 0, 0); rt_hw_interrupt_mask(uart5.irq); /* register UART4 device */ rt_hw_serial_register(&serial5, "uart5", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart5); #endif return 0; }
/** * This function will handle init uart */ void rt_hw_uart_init(void) { at91_usart_gpio_init(); #if defined(RT_USING_DBGU) serial_dbgu.ops = &at91_usart_ops; serial_dbgu.config.baud_rate = BAUD_RATE_115200; serial_dbgu.config.bit_order = BIT_ORDER_LSB; serial_dbgu.config.data_bits = DATA_BITS_8; serial_dbgu.config.parity = PARITY_NONE; serial_dbgu.config.stop_bits = STOP_BITS_1; serial_dbgu.config.invert = NRZ_NORMAL; serial_dbgu.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial_dbgu, "dbgu", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &dbgu); #endif #if defined(RT_USING_UART0) serial0.ops = &at91_usart_ops; serial0.config.baud_rate = BAUD_RATE_115200; serial0.config.bit_order = BIT_ORDER_LSB; serial0.config.data_bits = DATA_BITS_8; serial0.config.parity = PARITY_NONE; serial0.config.stop_bits = STOP_BITS_1; serial0.config.invert = NRZ_NORMAL; serial0.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart0); rt_hw_interrupt_install(uart0.irq, rt_at91_usart_handler, (void *)&(serial0.parent), "UART0"); rt_hw_interrupt_umask(uart0.irq); #endif #if defined(RT_USING_UART1) serial1.ops = &at91_usart_ops; serial1.int_rx = &uart1_int_rx; serial1.config.baud_rate = BAUD_RATE_115200; serial1.config.bit_order = BIT_ORDER_LSB; serial1.config.data_bits = DATA_BITS_8; serial1.config.parity = PARITY_NONE; serial1.config.stop_bits = STOP_BITS_1; serial1.config.invert = NRZ_NORMAL; serial1.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart1); rt_hw_interrupt_install(uart1.irq, rt_at91_usart_handler, (void *)&(serial1.parent), "UART1"); rt_hw_interrupt_umask(uart1.irq); #endif #if defined(RT_USING_UART2) serial2.ops = &at91_usart_ops; serial2.config.baud_rate = BAUD_RATE_115200; serial2.config.bit_order = BIT_ORDER_LSB; serial2.config.data_bits = DATA_BITS_8; serial2.config.parity = PARITY_NONE; serial2.config.stop_bits = STOP_BITS_1; serial2.config.invert = NRZ_NORMAL; serial2.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart2); rt_hw_interrupt_install(uart2.irq, rt_at91_usart_handler, (void *)&(serial2.parent), "UART2"); rt_hw_interrupt_umask(uart2.irq); #endif #if defined(RT_USING_UART3) serial3.ops = &at91_usart_ops; serial3.config.baud_rate = BAUD_RATE_115200; serial3.config.bit_order = BIT_ORDER_LSB; serial3.config.data_bits = DATA_BITS_8; serial3.config.parity = PARITY_NONE; serial3.config.stop_bits = STOP_BITS_1; serial3.config.invert = NRZ_NORMAL; serial3.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart3); rt_hw_interrupt_install(uart3.irq, rt_at91_usart_handler, (void *)&(serial3.parent), "UART3"); rt_hw_interrupt_umask(uart3.irq); #endif }
void rt_hw_usart_init(void) { struct stm32_uart* uart; struct serial_configure config; RCC_Configuration(); GPIO_Configuration(); #ifdef RT_USING_UART1 uart = &uart1; config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; serial1.ops = &stm32_uart_ops; serial1.int_rx = &uart1_int_rx; serial1.config = config; NVIC_Configuration(&uart1); /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); #endif #ifdef RT_USING_UART2 uart = &uart2; config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; serial2.ops = &stm32_uart_ops; serial2.int_rx = &uart2_int_rx; serial2.config = config; NVIC_Configuration(&uart2); /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); #endif #ifdef RT_USING_UART3 uart = &uart3; config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; serial3.ops = &stm32_uart_ops; serial3.int_rx = &uart3_int_rx; serial3.config = config; NVIC_Configuration(&uart3); /* register UART1 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); #endif }
/* * Init all related hardware in here * rt_hw_serial_init() will register all supported USART device */ void rt_hw_usart_init() { USART_InitTypeDef USART_InitStructure; RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); DMA_Configuration(); /* uart init */ #ifdef RT_USING_UART1 USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* register uart1 */ rt_hw_serial_register(&uart1_device, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart1); /* enable interrupt */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); #endif #ifdef RT_USING_UART2 USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStructure); /* register uart2 */ rt_hw_serial_register(&uart2_device, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart2); /* Enable USART2 DMA Rx request */ USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); #endif #ifdef RT_USING_UART3 USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); // uart3_dma_tx.dma_channel= UART3_TX_DMA; /* register uart3 */ rt_hw_serial_register(&uart3_device, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX, &uart3); /* Enable USART3 DMA Tx request */ USART_DMACmd(USART3, USART_DMAReq_Tx , ENABLE); /* enable interrupt */ USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); #endif }
void Uarts_Init(void) { int i; void uart_dma_init(u8 uartx); int uart_num = sizeof(uarts) /sizeof(uarts[0]); for(i=0; i<uart_num; i++) { _uart_rcc_init(&uarts[i]); _uart_gpio_init(&uarts[i]); _uart_conf(&uarts[i]); _uart_nvic_init(&uarts[i]); } /* ---- register uart 2 ---- */ /** @attention: uart2用作键盘输入用,不用dma的输入*/ rt_hw_serial_register(&uart2_device, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX /*RT_DEVICE_FLAG_STREAM |*/, &uart2); uart_dma_init(2); USART_DMACmd(USART2, USART_DMAReq_Rx, DISABLE ); USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); /* ---- register uart 3 ---- */ rt_hw_serial_register(&uart3_device, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX /*RT_DEVICE_FLAG_STREAM |*/, &uart3); uart_dma_init(3); /* ---- register uart 4 ---- */ rt_hw_serial_register(&uart4_device, "uart4", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX /*RT_DEVICE_FLAG_STREAM |*/, &uart4); uart_dma_init(4); USART_DMACmd(UART4, USART_DMAReq_Rx, DISABLE ); USART_ITConfig(UART4, USART_IT_RXNE, ENABLE); /* ---- register uart 6 ---- */ rt_hw_serial_register(&uart6_device, "uart6", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX /*RT_DEVICE_FLAG_STREAM |*/, &uart6); uart_dma_init(6); /* ---- register uart 1 ---- */ rt_hw_serial_register(&uart1_device, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM/*| RT_DEVICE_FLAG_DMA_TX*/ , &uart1); uart_dma_init(1); // USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); }
void rt_hw_usart_init(void) { struct sam4_usart *usart; #ifdef RT_USING_USART0 usart = &usart0; usart->usart_device = USART0; usart->usart_irq = USART0_IRQn; /*禁止外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4300; /*使能USART1和PIOA时钟*/ PMC->PMC_PCER0 = ((1UL << ID_PIOA) | (1UL << ID_USART0) ); /*使能外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4301; /*配置PA5为USART0的RXD,PA6为USART0的TXD*/ PIOA->PIO_IDR=(PIO_PA5A_RXD0|PIO_PA6A_TXD0); PIOA->PIO_PUDR=(PIO_PA5A_RXD0|PIO_PA6A_TXD0); PIOA->PIO_ABCDSR[0]&=~(PIO_PA5A_RXD0|PIO_PA6A_TXD0); PIOA->PIO_ABCDSR[1]&=~(PIO_PA5A_RXD0|PIO_PA6A_TXD0); PIOA->PIO_PDR=(PIO_PA5A_RXD0|PIO_PA6A_TXD0); /* 复位并禁止USART的发送和接收*/ USART0->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RXDIS | US_CR_TXDIS; /*配置USART0的波特率*/ USART0->US_BRGR=BAUD(BAUD_RATE_115200); /*定义数据位为8bit,停止位为1,校验位为NONE*/ USART0->US_MR = US_MR_USART_MODE_NORMAL| //普通模式 US_MR_CHRL_8_BIT| //数据位为8位 US_MR_NBSTOP_1_BIT| //停止位为1位 US_MR_PAR_NO| //校验位为NONE US_MR_CHMODE_NORMAL; //普通通道模式 /*禁止 DMA 通道 */ USART0->US_PTCR = US_PTCR_RXTDIS | US_PTCR_TXTDIS; /*使能USART接收和发送*/ USART0->US_CR = US_CR_RXEN | US_CR_TXEN; /*使能接收中断*/ USART0->US_IER=US_IER_RXRDY; /*使能USART0的中断通道*/ NVIC_EnableIRQ(USART0_IRQn); usart->serial.config.baud_rate = BAUD_RATE_115200; usart->serial.config.bit_order = BIT_ORDER_LSB; usart->serial.config.data_bits = DATA_BITS_8; usart->serial.config.parity = PARITY_NONE; usart->serial.config.stop_bits = STOP_BITS_1; usart->serial.config.invert = NRZ_NORMAL; usart->serial.ops = &sam4_usart_ops; usart->serial.int_rx = &usart->int_rx; /* register UART1 device */ rt_hw_serial_register(&usart->serial, "usart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, usart); #endif // RT_USING_USART0 #ifdef RT_USING_USART1 usart = &usart1; usart->usart_device = USART1; usart->usart_irq = USART1_IRQn; /*禁止外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4300; /*使能USART1和PIOB时钟*/ PMC->PMC_PCER0 = ((1UL << ID_PIOA) | (1UL << ID_USART1) ); /*使能外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4301; /*配置PA21为USART1的RXD,PA22为USART1的TXD*/ PIOA->PIO_IDR=(PIO_PA21A_RXD1|PIO_PA22A_TXD1); PIOA->PIO_PUDR=(PIO_PA21A_RXD1|PIO_PA22A_TXD1); PIOA->PIO_ABCDSR[0]&=~(PIO_PA21A_RXD1|PIO_PA22A_TXD1); PIOA->PIO_ABCDSR[1]&=~(PIO_PA21A_RXD1|PIO_PA22A_TXD1); PIOA->PIO_PDR=(PIO_PA21A_RXD1|PIO_PA22A_TXD1); /* 复位并禁止USART的发送和接收*/ USART1->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RXDIS | US_CR_TXDIS; /*配置USART1的波特率*/ USART1->US_BRGR=BAUD(BAUD_RATE_115200); /*定义数据位为8bit,停止位为1,校验位为NONE*/ USART1->US_MR = US_MR_USART_MODE_NORMAL| //普通模式 US_MR_CHRL_8_BIT| //数据位为8位 US_MR_NBSTOP_1_BIT| //停止位为1位 US_MR_PAR_NO| //校验位为NONE US_MR_CHMODE_NORMAL; //普通通道模式 /*禁止 DMA 通道 */ USART1->US_PTCR = US_PTCR_RXTDIS | US_PTCR_TXTDIS; /*使能USART接收和发送*/ USART1->US_CR = US_CR_RXEN | US_CR_TXEN; /*使能接收中断*/ USART1->US_IER=US_IER_RXRDY; /*使能USART1的中断通道*/ NVIC_EnableIRQ(USART1_IRQn); usart->serial.config.baud_rate = BAUD_RATE_115200; usart->serial.config.bit_order = BIT_ORDER_LSB; usart->serial.config.data_bits = DATA_BITS_8; usart->serial.config.parity = PARITY_NONE; usart->serial.config.stop_bits = STOP_BITS_1; usart->serial.config.invert = NRZ_NORMAL; usart->serial.ops = &sam4_usart_ops; usart->serial.int_rx = &usart->int_rx; /* register UART1 device */ rt_hw_serial_register(&usart->serial, "usart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, usart); #endif // RT_USING_USART1 #ifdef RT_USING_USART2 usart = &usart2; usart->usart_device = USART2; usart->usart_irq = USART2_IRQn; /*禁止外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4300; /*使能USART2和PIOA时钟*/ PMC->PMC_PCER0 = ((1UL << ID_PIOC) | (1UL << ID_USART2) ); /*使能外设管理控制寄存器(PMC)写保护*/ PMC->PMC_WPMR = 0x504D4301; /*配置PC9为USART2的RXD,PC10为USART2的TXD*/ PIOC->PIO_IDR=(PIO_PC9A_RXD2|PIO_PC10A_TXD2); PIOC->PIO_PUDR=(PIO_PC9A_RXD2|PIO_PC10A_TXD2); PIOC->PIO_ABCDSR[0]&=~(PIO_PC9A_RXD2|PIO_PC10A_TXD2); PIOC->PIO_ABCDSR[1]&=~(PIO_PC9A_RXD2|PIO_PC10A_TXD2); PIOC->PIO_PDR=(PIO_PC9A_RXD2|PIO_PC10A_TXD2); /* 复位并禁止USART的发送和接收*/ USART2->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RXDIS | US_CR_TXDIS; /*配置USART2的波特率*/ USART2->US_BRGR=BAUD(BAUD_RATE_115200); /*定义数据位为8bit,停止位为1,校验位为NONE*/ USART2->US_MR = US_MR_USART_MODE_NORMAL| //普通模式 US_MR_CHRL_8_BIT| //数据位为8位 US_MR_NBSTOP_1_BIT| //停止位为1位 US_MR_PAR_NO| //校验位为NONE US_MR_CHMODE_NORMAL; //普通通道模式 /*禁止 DMA 通道 */ USART2->US_PTCR = US_PTCR_RXTDIS | US_PTCR_TXTDIS; /*使能USART接收和发送*/ USART2->US_CR = US_CR_RXEN | US_CR_TXEN; /*使能接收中断*/ USART2->US_IER=US_IER_RXRDY; /*使能USART2的中断通道*/ NVIC_EnableIRQ(USART2_IRQn); usart->serial.config.baud_rate = BAUD_RATE_115200; usart->serial.config.bit_order = BIT_ORDER_LSB; usart->serial.config.data_bits = DATA_BITS_8; usart->serial.config.parity = PARITY_NONE; usart->serial.config.stop_bits = STOP_BITS_1; usart->serial.config.invert = NRZ_NORMAL; usart->serial.ops = &sam4_usart_ops; usart->serial.int_rx = &usart->int_rx; /* register UART2 device */ rt_hw_serial_register(&usart->serial, "usart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, usart); #endif // RT_USING_USART2 }
rt_err_t rt_hw_serial_init(struct serial_device * serial, char * name) { return rt_hw_serial_register(RT_DEVICE(serial), name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM); }
void rt_hw_serial_init(void) { struct serial_configure config; uart_pin_setup(); #if (defined(RT_USING_UART0_0) || defined(RT_USING_UART0_1)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial0.ops = &uart03_ops; serial0.config = config; /* register UART0 device */ rt_hw_serial_register(&serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart0); #endif #if (defined(RT_USING_UART1_0) || defined(RT_USING_UART1_1)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial1.ops = &uart03_ops; serial1.config = config; /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart1); #endif #if (defined(RT_USING_UART2_0) || defined(RT_USING_UART2_1) || defined(RT_USING_UART2_2)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &uart03_ops; serial2.config = config; /* register UART2 device */ rt_hw_serial_register(&serial2, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart2); #endif #if (defined(RT_USING_UART3_0) || defined(RT_USING_UART3_1) || defined(RT_USING_UART3_2)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial3.ops = &uart03_ops; serial3.config = config; /* register UART3 device */ rt_hw_serial_register(&serial3, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart3); #endif #if (defined(RT_USING_UART4_0) || defined(RT_USING_UART4_1) || defined(RT_USING_UART4_2)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial4.ops = &uart47_ops; serial4.config = config; /* register UART4 device */ rt_hw_serial_register(&serial4, "uart4", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart4); #endif #if (defined(RT_USING_UART5_0) || defined(RT_USING_UART5_1) || defined(RT_USING_UART5_2)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial5.ops = &uart47_ops; serial5.config = config; /* register UART5 device */ rt_hw_serial_register(&serial5, "uart5", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart5); #endif #if (defined(RT_USING_UART6_0) || defined(RT_USING_UART6_1)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial6.ops = &uart47_ops; serial6.config = config; /* register UART6 device */ rt_hw_serial_register(&serial6, "uart6", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart6); #endif #if (defined(RT_USING_UART7_0) || defined(RT_USING_UART7_1)) config.baud_rate = BAUD_RATE_115200; config.bit_order = BIT_ORDER_LSB; config.data_bits = DATA_BITS_8; config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; config.bufsz = RT_SERIAL_RB_BUFSZ; serial7.ops = &uart47_ops; serial7.config = config; /* register UART7 device */ rt_hw_serial_register(&serial7, "uart7", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart7); #endif }
void rtthread_startup(void) { /* init hardware interrupt */ rt_hw_interrupt_init(); /* init board */ rt_hw_board_init(); /* show version */ rt_show_version(); /* init tick */ rt_system_tick_init(); /* init kernel object */ rt_system_object_init(); /* init timer system */ rt_system_timer_init(); #ifdef RT_USING_HEAP rt_system_heap_init((void*)&rtt_heap_start, (void*)&rtt_heap_end); #endif #ifdef RT_USING_MODULE /* init module system*/ rt_system_module_init(); #endif /* init scheduler system */ rt_system_scheduler_init(); #ifdef RT_USING_DEVICE /* register uart0 */ rt_hw_serial_register(&uart0_device, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart0); rt_console_set_device("uart0"); #endif /* init application */ rt_application_init(); #ifdef RT_USING_FINSH /* init finsh */ extern void finsh_system_init(void); finsh_system_init(); finsh_set_device("uart0"); #endif rt_system_timer_thread_init(); /* init idle thread */ rt_thread_idle_init(); /* start scheduler */ rt_system_scheduler_start(); /* never reach here */ return ; }