rt-thread-official/bsp/hc32l196/drivers/drv_usart.h

81 lines
2.2 KiB
C

/*
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-9-1 DongBowen first version
*/
#ifndef __DRV_USART_H__
#define __DRV_USART_H__
#include <rtthread.h>
#include "rtdevice.h"
#include "board_config.h"
/* hc config class */
struct hc_uart_cfg
{
const char *name;
M0P_UART_TypeDef *uart;
en_sysctrl_peripheral_gate_t uart_periph;
IRQn_Type irqn;
en_gpio_port_t rx_port;
en_gpio_pin_t rx_pin;
en_gpio_af_t rx_af;
en_gpio_port_t tx_port;
en_gpio_pin_t tx_pin;
en_gpio_af_t tx_af;
};
/* hc uart dirver class */
struct hc_uart
{
struct hc_uart_cfg *cfg;
struct rt_serial_device serial_device;
};
#ifdef BSP_USING_UART0
#ifndef UART0_CFG
#define UART0_CFG \
{ \
.name = "uart0", \
.uart = M0P_UART0, \
.uart_periph = SysctrlPeripheralUart0, \
.irqn = UART0_2_IRQn, \
.rx_port = UART0_RX_PORT, \
.rx_pin = UART0_RX_PIN, \
.rx_af = UART0_RX_AF, \
.tx_port = UART0_TX_PORT, \
.tx_pin = UART0_TX_PIN, \
.tx_af = UART0_TX_AF, \
}
#endif /* UART0_CFG */
#endif /* BSP_USING_UART0 */
#ifdef BSP_USING_UART1
#ifndef UART1_CFG
#define UART1_CFG \
{ \
.name = "uart1", \
.uart = M0P_UART1, \
.uart_periph = SysctrlPeripheralUart1, \
.irqn = UART1_3_IRQn, \
.rx_port = UART1_RX_PORT, \
.rx_pin = UART1_RX_PIN, \
.rx_af = UART1_RX_AF, \
.tx_port = UART1_TX_PORT, \
.tx_pin = UART1_TX_PIN, \
.tx_af = UART1_TX_AF, \
}
#endif /* UART1_CFG */
#endif /* BSP_USING_UART1 */
int rt_hw_uart_init(void);
#endif /* __DRV_USART_H__ */