support uart for ru-d01-m200

This commit is contained in:
MIN 2024-09-11 13:46:59 +08:00
parent fb4eb87659
commit ecc68cd331
5 changed files with 562 additions and 53 deletions

View File

@ -50,8 +50,8 @@ extern "C" {
#define STOP_BITS_4 4
#define PARITY_NONE 1
#define PARITY_ODD 2
#define PARITY_EVEN 3
#define PARITY_ODD 2
#define PARITY_EVEN 3
#define BIT_ORDER_LSB 1
#define BIT_ORDER_MSB 2

View File

@ -35,6 +35,75 @@ menu "ru-d01-m200 feature"
endmenu
menu "config console output device"
depends on KERNEL_CONSOLE
choice
prompt "Select Console Interface"
default BSP_CONSOLE_UART
help
Select the interface to use as the console. Ensure that the corresponding device is enabled.
config BSP_CONSOLE_UART
bool "Use UART as Console"
depends on BSP_USING_UART
endchoice
if BSP_CONSOLE_UART
choice
prompt "Select UART Device"
default BSP_CONSOLE_UART1
help
Select the UART device to use as the console output. The corresponding UART device will be automatically enabled.
config BSP_CONSOLE_UART1
bool "UART1"
select BSP_USING_USART1
config BSP_CONSOLE_UART2
bool "UART2"
select BSP_USING_USART2
config BSP_CONSOLE_UART3
bool "UART3"
select BSP_USING_USART3
config BSP_CONSOLE_UART4
bool "UART4"
select BSP_USING_UART4
config BSP_CONSOLE_UART5
bool "UART5"
select BSP_USING_UART5
endchoice
endif
# Define KERNEL_CONSOLE_* based on selected device
config KERNEL_CONSOLE_BUS_NAME
string "Console bus name"
default SERIAL_BUS_NAME_1 if BSP_CONSOLE_UART1
default SERIAL_BUS_NAME_2 if BSP_CONSOLE_UART2
default SERIAL_BUS_NAME_3 if BSP_CONSOLE_UART3
default SERIAL_BUS_NAME_4 if BSP_CONSOLE_UART4
default SERIAL_BUS_NAME_5 if BSP_CONSOLE_UART5
config KERNEL_CONSOLE_DRV_NAME
string "Console driver name"
default SERIAL_DRV_NAME_1 if BSP_CONSOLE_UART1
default SERIAL_DRV_NAME_2 if BSP_CONSOLE_UART2
default SERIAL_DRV_NAME_3 if BSP_CONSOLE_UART3
default SERIAL_DRV_NAME_4 if BSP_CONSOLE_UART4
default SERIAL_DRV_NAME_5 if BSP_CONSOLE_UART5
config KERNEL_CONSOLE_DEVICE_NAME
string "Console device name"
default SERIAL_1_DEVICE_NAME_0 if BSP_CONSOLE_UART1
default SERIAL_2_DEVICE_NAME_0 if BSP_CONSOLE_UART2
default SERIAL_3_DEVICE_NAME_0 if BSP_CONSOLE_UART3
default SERIAL_4_DEVICE_NAME_0 if BSP_CONSOLE_UART4
default SERIAL_5_DEVICE_NAME_0 if BSP_CONSOLE_UART5
endmenu
endmenu

View File

@ -29,10 +29,6 @@
extern "C" {
#endif
#define KERNEL_CONSOLE_BUS_NAME SERIAL_BUS_NAME_1
#define KERNEL_CONSOLE_DRV_NAME SERIAL_DRV_NAME_1
#define KERNEL_CONSOLE_DEVICE_NAME SERIAL_1_DEVICE_NAME_0
#define USART1_PREEMPT_PRIORITY 3
#define USART1_SUB_PRIORITY 0
@ -42,10 +38,6 @@ struct UsartHwCfg
IRQn_Type irq;
};
#define KERNEL_CONSOLE_BUS_NAME SERIAL_BUS_NAME_1
#define KERNEL_CONSOLE_DRV_NAME SERIAL_DRV_NAME_1
#define KERNEL_CONSOLE_DEVICE_NAME SERIAL_1_DEVICE_NAME_0
int HwUsartInit(void);

View File

@ -9,8 +9,70 @@ menuconfig BSP_USING_USART1
string "serial bus 1 driver name"
default "usart1_drv"
config SERIAL_1_DEVICE_NAME_0
string "serial bus 1 device 0 name"
default "usart1_dev1"
string "serial bus 1 device 0 name"
default "usart1_dev1"
menuconfig USART1_ENABLE_DETAILED_CONFIG
bool "Enable detailed configuration for USART1"
default n
help
Enable this option if you want to configure USART1 parameters like BaudRate, Parity, DataWidth, and StopBits.
if USART1_ENABLE_DETAILED_CONFIG
config USART1_BAUDRATE
int "USART1 BaudRate"
default 115200
help
Configure the baud rate for USART1. Options:
- 2400
- 4800
- 9600
- 19200
- 38400
- 57600
- 115200
- 230400
- 460800
- 921600
- 2000000
- 3000000
choice
prompt "USART1 Parity Mode"
default USART1_PARITY_NONE
help
Select the parity mode for USART1.
config USART1_PARITY_NONE
bool "None"
config USART1_PARITY_ODD
bool "Odd"
config USART1_PARITY_EVEN
bool "Even"
endchoice
choice
prompt "USART1 Data Width"
default USART1_DATA_BITS_8
help
Select the data width for USART1.
config USART1_DATA_BITS_7
bool "7 bits"
config USART1_DATA_BITS_8
bool "8 bits"
config USART1_DATA_BITS_9
bool "9 bits"
endchoice
choice
prompt "USART1 Stop Bits"
default USART1_STOP_BITS_1
help
Select the stop bits for USART1.
config USART1_STOP_BITS_1
bool "1 stop bit"
config USART1_STOP_BITS_2
bool "2 stop bits"
endchoice
endif
endif
menuconfig BSP_USING_USART2
@ -24,8 +86,8 @@ menuconfig BSP_USING_USART2
string "serial bus 2 driver name"
default "usart2_drv"
config SERIAL_2_DEVICE_NAME_0
string "serial bus 2 device 0 name"
default "usart2_dev2"
string "serial bus 2 device 0 name"
default "usart2_dev2"
endif
menuconfig BSP_USING_USART3
@ -39,8 +101,8 @@ menuconfig BSP_USING_USART3
string "serial bus 3 driver name"
default "usart3_drv"
config SERIAL_3_DEVICE_NAME_0
string "serial bus 3 device 0 name"
default "usart3_dev3"
string "serial bus 3 device 0 name"
default "usart3_dev3"
endif
menuconfig BSP_USING_UART4
@ -54,8 +116,8 @@ menuconfig BSP_USING_UART4
string "serial bus 4 driver name"
default "uart4drv"
config SERIAL_4_DEVICE_NAME_0
string "serial bus 4 device 0 name"
default "uart4_dev4"
string "serial bus 4 device 0 name"
default "uart4_dev4"
endif
menuconfig BSP_USING_UART5
@ -69,6 +131,6 @@ menuconfig BSP_USING_UART5
string "serial bus 5 driver name"
default "uart5_drv"
config SERIAL_5_DEVICE_NAME_0
string "serial bus 5 device 0 name"
default "uart5_dev5"
string "serial bus 5 device 0 name"
default "uart5_dev5"
endif

View File

@ -46,14 +46,130 @@ Modification:
#include "stm32l4xx_ll_gpio.h"
#include "stm32l4xx_ll_bus.h"
#if defined(BSP_USING_UART1)
#define USART1_RX_PORT (GPIO_PORT_B)
#define USART1_RX_PIN (GPIO_PIN_11)
#define USART1_TX_PORT (GPIO_PORT_B)
#define USART1_TX_PIN (GPIO_PIN_10)
#if defined(BSP_USING_USART1)
#define UART1_GPIO_PORT (GPIOA)
#define UART1_GPIO_RX_PIN (LL_GPIO_PIN_10)
#define UART1_GPIO_TX_PIN (LL_GPIO_PIN_9)
#define UART1_GPIO_ALTERNATE (LL_GPIO_AF_7)
#endif
#if defined(BSP_USING_USART2)
#define UART2_GPIO_PORT (GPIOA)
#define UART2_GPIO_RX_PIN (LL_GPIO_PIN_3)
#define UART2_GPIO_TX_PIN (LL_GPIO_PIN_2)
#define UART2_GPIO_ALTERNATE (LL_GPIO_AF_7)
#endif
#if defined(BSP_USING_USART3)
#define UART3_GPIO_PORT (GPIOC)
#define UART3_GPIO_RX_PIN (LL_GPIO_PIN_5)
#define UART3_GPIO_TX_PIN (LL_GPIO_PIN_4)
#define UART3_GPIO_ALTERNATE (LL_GPIO_AF_7)
#endif
#if defined(BSP_USING_UART4)
#define UART4_GPIO_PORT (GPIOA)
#define UART4_GPIO_RX_PIN (LL_GPIO_PIN_1)
#define UART4_GPIO_TX_PIN (LL_GPIO_PIN_0)
#define UART4_GPIO_ALTERNATE (LL_GPIO_AF_8)
#endif
#if defined(BSP_USING_UART5)
#define UART5_GPIO_RX_PORT (GPIOD)
#define UART5_GPIO_RX_PIN (LL_GPIO_PIN_2)
#define UART5_GPIO_TX_PORT (GPIOC)
#define UART5_GPIO_TX_PIN (LL_GPIO_PIN_12)
#define UART5_GPIO_ALTERNATE (LL_GPIO_AF_8)
#endif
static void RCC_Configuration(void)
{
#ifdef BSP_USING_USART1
LL_RCC_SetUSARTClockSource(LL_RCC_USART1_CLKSOURCE_PCLK2);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
#endif
#ifdef BSP_USING_USART2
LL_RCC_SetUSARTClockSource(LL_RCC_USART2_CLKSOURCE_PCLK1);
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
#endif
#ifdef BSP_USING_USART3
LL_RCC_SetUSARTClockSource(LL_RCC_USART3_CLKSOURCE_PCLK1);
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC);
#endif
#ifdef BSP_USING_UART4
LL_RCC_SetUARTClockSource(LL_RCC_UART4_CLKSOURCE_PCLK1);
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_UART4);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
#endif
#ifdef BSP_USING_UART5
LL_RCC_SetUARTClockSource(LL_RCC_UART5_CLKSOURCE_PCLK1);
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_UART5);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOD);
#endif
}
static void GPIO_Configuration(void)
{
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
#ifdef BSP_USING_USART1
GPIO_InitStruct.Pin = UART1_GPIO_RX_PIN | UART1_GPIO_TX_PIN;
GPIO_InitStruct.Alternate = UART1_GPIO_ALTERNATE;
LL_GPIO_Init(UART1_GPIO_PORT, &GPIO_InitStruct);
#endif
#ifdef BSP_USING_USART2
GPIO_InitStruct.Pin = UART2_GPIO_RX_PIN | UART2_GPIO_TX_PIN;
GPIO_InitStruct.Alternate = UART2_GPIO_ALTERNATE;
LL_GPIO_Init(UART2_GPIO_PORT, &GPIO_InitStruct);
#endif
#ifdef BSP_USING_USART3
GPIO_InitStruct.Pin = UART3_GPIO_RX_PIN | UART3_GPIO_TX_PIN;
GPIO_InitStruct.Alternate = UART3_GPIO_ALTERNATE;
LL_GPIO_Init(UART3_GPIO_PORT, &GPIO_InitStruct);
#endif
#ifdef BSP_USING_UART4
GPIO_InitStruct.Pin = UART4_GPIO_RX_PIN | UART4_GPIO_TX_PIN;
GPIO_InitStruct.Alternate = UART4_GPIO_ALTERNATE;
LL_GPIO_Init(UART4_GPIO_PORT, &GPIO_InitStruct);
#endif
#ifdef BSP_USING_UART5
GPIO_InitStruct.Alternate = UART5_GPIO_ALTERNATE;
GPIO_InitStruct.Pin = UART5_GPIO_RX_PIN;
LL_GPIO_Init(UART5_GPIO_RX_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = UART5_GPIO_TX_PIN;
LL_GPIO_Init(UART5_GPIO_TX_PORT, &GPIO_InitStruct);
#endif
}
static void NVIC_Configuration(IRQn_Type irq)
{
NVIC_SetPriority(irq, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
NVIC_EnableIRQ(irq);
}
static void UartIsr(struct SerialBus *serial, struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev);
@ -102,6 +218,9 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data;
struct UsartHwCfg *serial_hw_cfg = (struct UsartHwCfg *)serial_cfg->hw_cfg.private_data;
/* Interrupt Init */
NVIC_Configuration(serial_hw_cfg->irq);
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
@ -119,35 +238,69 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
LL_USART_InitTypeDef USART_InitStruct = {0};
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
USART_InitStruct.BaudRate = serial_cfg->data_cfg.serial_baud_rate;
USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
LL_RCC_SetUSARTClockSource(LL_RCC_USART1_CLKSOURCE_PCLK2);
switch (serial_cfg->data_cfg.serial_parity_mode)
{
case PARITY_NONE:
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
break;
case PARITY_ODD:
USART_InitStruct.Parity = LL_USART_PARITY_ODD;
break;
case PARITY_EVEN:
USART_InitStruct.Parity = LL_USART_PARITY_EVEN;
break;
default:
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
break;
}
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1);
switch (serial_cfg->data_cfg.serial_data_bits)
{
case DATA_BITS_7:
if (serial_cfg->data_cfg.serial_parity_mode != PARITY_NONE)
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
else
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_7B;
break;
case DATA_BITS_8:
if (serial_cfg->data_cfg.serial_parity_mode != PARITY_NONE)
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_9B;
else
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
break;
case DATA_BITS_9:
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_9B;
break;
default:
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
break;
}
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
GPIO_InitStruct.Pin = LL_GPIO_PIN_9|LL_GPIO_PIN_10;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
GPIO_InitStruct.Alternate = LL_GPIO_AF_7;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
switch (serial_cfg->data_cfg.serial_stop_bits)
{
case STOP_BITS_1:
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
break;
case STOP_BITS_2:
USART_InitStruct.StopBits = LL_USART_STOPBITS_2;
break;
default:
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
break;
}
LL_USART_EnableIT_RXNE(serial_hw_cfg->uart_device);
NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
NVIC_EnableIRQ(USART1_IRQn);
LL_USART_EnableIT_RXNE(USART1);
USART_InitStruct.BaudRate = 115200;
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
LL_USART_Init(USART1, &USART_InitStruct);
LL_USART_ConfigAsyncMode(USART1);
LL_USART_Enable(USART1);
if (LL_USART_Init(serial_hw_cfg->uart_device, &USART_InitStruct) != LL_SUCCESS) {
return ERROR;
}
LL_USART_ConfigAsyncMode(serial_hw_cfg->uart_device);
LL_USART_Enable(serial_hw_cfg->uart_device);
return EOK;
}
@ -226,6 +379,54 @@ void USART1_IRQHandler(int irq_num, void *arg)
DECLARE_HW_IRQ(USART1_IRQn, USART1_IRQHandler, NONE);
#endif
#ifdef BSP_USING_USART2
struct SerialBus serial_bus_2;
struct SerialDriver serial_driver_2;
struct SerialHardwareDevice serial_device_2;
void USART2_IRQHandler(int irq_num, void *arg)
{
UartIsr(&serial_bus_2, &serial_driver_2, &serial_device_2);
}
DECLARE_HW_IRQ(USART2_IRQn, USART2_IRQHandler, NONE);
#endif
#ifdef BSP_USING_USART3
struct SerialBus serial_bus_3;
struct SerialDriver serial_driver_3;
struct SerialHardwareDevice serial_device_3;
void USART3_IRQHandler(int irq_num, void *arg)
{
UartIsr(&serial_bus_3, &serial_driver_3, &serial_device_3);
}
DECLARE_HW_IRQ(USART3_IRQn, USART3_IRQHandler, NONE);
#endif
#ifdef BSP_USING_UART4
struct SerialBus serial_bus_4;
struct SerialDriver serial_driver_4;
struct SerialHardwareDevice serial_device_4;
void UART4_IRQHandler(int irq_num, void *arg)
{
UartIsr(&serial_bus_4, &serial_driver_4, &serial_device_4);
}
DECLARE_HW_IRQ(UART4_IRQn, UART4_IRQHandler, NONE);
#endif
#ifdef BSP_USING_UART5
struct SerialBus serial_bus_5;
struct SerialDriver serial_driver_5;
struct SerialHardwareDevice serial_device_5;
void UART5_IRQHandler(int irq_num, void *arg)
{
UartIsr(&serial_bus_5, &serial_driver_5, &serial_device_5);
}
DECLARE_HW_IRQ(UART5_IRQn, UART5_IRQHandler, NONE);
#endif
static uint32 SerialDrvConfigure(void *drv, struct BusConfigureInfo *configure_info)
{
NULL_PARAM_CHECK(drv);
@ -329,6 +530,10 @@ int HwUsartInit(void)
{
x_err_t ret = EOK;
RCC_Configuration();
GPIO_Configuration();
#ifdef BSP_USING_USART1
static struct SerialCfgParam serial_cfg_1;
memset(&serial_cfg_1, 0, sizeof(struct SerialCfgParam));
@ -340,10 +545,35 @@ int HwUsartInit(void)
memset(&serial_hw_cfg_1, 0, sizeof(struct UsartHwCfg));
serial_driver_1.drv_done = &drv_done;
serial_driver_1.configure = SerialDrvConfigure;
serial_driver_1.configure = &SerialDrvConfigure;
serial_device_1.hwdev_done = &hwdev_done;
serial_cfg_1.data_cfg = data_cfg_init;
#ifdef USART1_ENABLE_DETAILED_CONFIG
serial_cfg_1.data_cfg.serial_baud_rate = USART1_BAUDRATE;
#if defined USART1_PARITY_ODD
serial_cfg_1.data_cfg.serial_parity_mode = PARITY_ODD;
#elif defined USART1_PARITY_EVEN
serial_cfg_1.data_cfg.serial_parity_mode = PARITY_EVEN;
#else
serial_cfg_1.data_cfg.serial_parity_mode = PARITY_NONE;
#endif
#if defined USART1_DATA_BITS_7
serial_cfg_1.data_cfg.serial_data_bits = DATA_BITS_7;
#elif defined USART1_DATA_BITS_9
serial_cfg_1.data_cfg.serial_data_bits = DATA_BITS_9;
#else
serial_cfg_1.data_cfg.serial_data_bits = DATA_BITS_8;
#endif
#if defined USART1_STOP_BITS_2
serial_cfg_1.data_cfg.serial_stop_bits = STOP_BITS_2;
#else
serial_cfg_1.data_cfg.serial_stop_bits = STOP_BITS_1;
#endif
#endif
//default irq configure
serial_hw_cfg_1.uart_device = USART1;
@ -365,7 +595,163 @@ int HwUsartInit(void)
if (EOK != ret) {
KPrintf("HwUartInit uart1 error ret %u\n", ret);
return ERROR;
}
}
#endif
#ifdef BSP_USING_USART2
static struct SerialCfgParam serial_cfg_2;
memset(&serial_cfg_2, 0, sizeof(struct SerialCfgParam));
static struct SerialDevParam serial_dev_param_2;
memset(&serial_dev_param_2, 0, sizeof(struct SerialDevParam));
static struct UsartHwCfg serial_hw_cfg_2;
memset(&serial_hw_cfg_2, 0, sizeof(struct UsartHwCfg));
serial_driver_2.drv_done = &drv_done;
serial_driver_2.configure = &SerialDrvConfigure;
serial_device_2.hwdev_done = &hwdev_done;
serial_cfg_2.data_cfg = data_cfg_init;
//default irq configure
serial_hw_cfg_2.uart_device = USART2;
serial_hw_cfg_2.irq = USART2_IRQn;
serial_cfg_2.hw_cfg.private_data = (void *)&serial_hw_cfg_2;
serial_driver_2.private_data = (void *)&serial_cfg_2;
serial_dev_param_2.serial_work_mode = SIGN_OPER_INT_RX;
serial_device_2.haldev.private_data = (void *)&serial_dev_param_2;
ret = BoardSerialBusInit(&serial_bus_2, &serial_driver_2, SERIAL_BUS_NAME_2, SERIAL_DRV_NAME_2);
if (EOK != ret) {
KPrintf("HwUartInit uart2 error ret %u\n", ret);
return ERROR;
}
ret = BoardSerialDevBend(&serial_device_2, (void *)&serial_cfg_2, SERIAL_BUS_NAME_2, SERIAL_2_DEVICE_NAME_0);
if (EOK != ret) {
KPrintf("HwUartInit uart2 error ret %u\n", ret);
return ERROR;
}
#endif
#ifdef BSP_USING_USART3
static struct SerialCfgParam serial_cfg_3;
memset(&serial_cfg_3, 0, sizeof(struct SerialCfgParam));
static struct SerialDevParam serial_dev_param_3;
memset(&serial_dev_param_3, 0, sizeof(struct SerialDevParam));
static struct UsartHwCfg serial_hw_cfg_3;
memset(&serial_hw_cfg_3, 0, sizeof(struct UsartHwCfg));
serial_driver_3.drv_done = &drv_done;
serial_driver_3.configure = &SerialDrvConfigure;
serial_device_3.hwdev_done = &hwdev_done;
serial_cfg_3.data_cfg = data_cfg_init;
//default irq configure
serial_hw_cfg_3.uart_device = USART3;
serial_hw_cfg_3.irq = USART3_IRQn;
serial_cfg_3.hw_cfg.private_data = (void *)&serial_hw_cfg_3;
serial_driver_3.private_data = (void *)&serial_cfg_3;
serial_dev_param_3.serial_work_mode = SIGN_OPER_INT_RX;
serial_device_3.haldev.private_data = (void *)&serial_dev_param_3;
ret = BoardSerialBusInit(&serial_bus_3, &serial_driver_3, SERIAL_BUS_NAME_3, SERIAL_DRV_NAME_3);
if (EOK != ret) {
KPrintf("HwUartInit uart3 error ret %u\n", ret);
return ERROR;
}
ret = BoardSerialDevBend(&serial_device_3, (void *)&serial_cfg_3, SERIAL_BUS_NAME_3, SERIAL_3_DEVICE_NAME_0);
if (EOK != ret) {
KPrintf("HwUartInit uart3 error ret %u\n", ret);
return ERROR;
}
#endif
#ifdef BSP_USING_UART4
static struct SerialCfgParam serial_cfg_4;
memset(&serial_cfg_4, 0, sizeof(struct SerialCfgParam));
static struct SerialDevParam serial_dev_param_4;
memset(&serial_dev_param_4, 0, sizeof(struct SerialDevParam));
static struct UsartHwCfg serial_hw_cfg_4;
memset(&serial_hw_cfg_4, 0, sizeof(struct UsartHwCfg));
serial_driver_4.drv_done = &drv_done;
serial_driver_4.configure = &SerialDrvConfigure;
serial_device_4.hwdev_done = &hwdev_done;
serial_cfg_4.data_cfg = data_cfg_init;
//default irq configure
serial_hw_cfg_4.uart_device = UART4;
serial_hw_cfg_4.irq = UART4_IRQn;
serial_cfg_4.hw_cfg.private_data = (void *)&serial_hw_cfg_4;
serial_driver_4.private_data = (void *)&serial_cfg_4;
serial_dev_param_4.serial_work_mode = SIGN_OPER_INT_RX;
serial_device_4.haldev.private_data = (void *)&serial_dev_param_4;
ret = BoardSerialBusInit(&serial_bus_4, &serial_driver_4, SERIAL_BUS_NAME_4, SERIAL_DRV_NAME_4);
if (EOK != ret) {
KPrintf("HwUartInit uart4 error ret %u\n", ret);
return ERROR;
}
ret = BoardSerialDevBend(&serial_device_4, (void *)&serial_cfg_4, SERIAL_BUS_NAME_4, SERIAL_4_DEVICE_NAME_0);
if (EOK != ret) {
KPrintf("HwUartInit uart4 error ret %u\n", ret);
return ERROR;
}
#endif
#ifdef BSP_USING_UART5
static struct SerialCfgParam serial_cfg_5;
memset(&serial_cfg_5, 0, sizeof(struct SerialCfgParam));
static struct SerialDevParam serial_dev_param_5;
memset(&serial_dev_param_5, 0, sizeof(struct SerialDevParam));
static struct UsartHwCfg serial_hw_cfg_5;
memset(&serial_hw_cfg_5, 0, sizeof(struct UsartHwCfg));
serial_driver_5.drv_done = &drv_done;
serial_driver_5.configure = &SerialDrvConfigure;
serial_device_5.hwdev_done = &hwdev_done;
serial_cfg_5.data_cfg = data_cfg_init;
//default irq configure
serial_hw_cfg_5.uart_device = UART5;
serial_hw_cfg_5.irq = UART5_IRQn;
serial_cfg_5.hw_cfg.private_data = (void *)&serial_hw_cfg_5;
serial_driver_5.private_data = (void *)&serial_cfg_5;
serial_dev_param_5.serial_work_mode = SIGN_OPER_INT_RX;
serial_device_5.haldev.private_data = (void *)&serial_dev_param_5;
ret = BoardSerialBusInit(&serial_bus_5, &serial_driver_5, SERIAL_BUS_NAME_5, SERIAL_DRV_NAME_5);
if (EOK != ret) {
KPrintf("HwUartInit uart5 error ret %u\n", ret);
return ERROR;
}
ret = BoardSerialDevBend(&serial_device_5, (void *)&serial_cfg_5, SERIAL_BUS_NAME_5, SERIAL_5_DEVICE_NAME_0);
if (EOK != ret) {
KPrintf("HwUartInit uart5 error ret %u\n", ret);
return ERROR;
}
#endif
return ret;