#ifndef __HAL_UART_H__ #define __HAL_UART_H__ #include "hc32_ll_usart.h" #include "hc32_ll_gpio.h" #include "hc32_ll_fcg.h" #include "hc32_ll_interrupts.h" #include "hc32_ll_tmr0.h" #include "hc32_ll_tmr4.h" #include "ring_buf.h" #include "hc32_ll_aos.h" #define RS485_TX_ENABLE GPIO_ResetPins(GPIO_PORT_A, GPIO_PIN_08) #define RS485_TX_DISABLE GPIO_SetPins(GPIO_PORT_A, GPIO_PIN_08) #define LL_PERIPH_SEL (LL_PERIPH_GPIO | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | \ LL_PERIPH_EFM | LL_PERIPH_SRAM) /* DMA definition */ #define RX_DMA_UNIT (CM_DMA1) #define RX_DMA_CH (DMA_CH0) #define RX_DMA_FCG_ENABLE() (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA1, ENABLE)) #define RX_DMA_TRIG_SEL (AOS_DMA1_0) #define RX_DMA_TRIG_EVT_SRC (EVT_SRC_USART2_RI) #define RX_DMA_RECONF_TRIG_SEL (AOS_DMA_RC) #define RX_DMA_RECONF_TRIG_EVT_SRC (EVT_SRC_AOS_STRG) #define RX_DMA_TC_INT (DMA_INT_TC_CH0) #define RX_DMA_TC_FLAG (DMA_FLAG_TC_CH0) #define RX_DMA_TC_IRQn (INT000_IRQn) #define RX_DMA_TC_INT_SRC (INT_SRC_DMA1_TC0) #define TX_DMA_UNIT (CM_DMA2) #define TX_DMA_CH (DMA_CH0) #define TX_DMA_FCG_ENABLE() (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA2, ENABLE)) #define TX_DMA_TRIG_SEL (AOS_DMA2_0) #define TX_DMA_TRIG_EVT_SRC (EVT_SRC_USART2_TI) #define TX_DMA_TC_INT (DMA_INT_TC_CH0) #define TX_DMA_TC_FLAG (DMA_FLAG_TC_CH0) #define TX_DMA_TC_IRQn (INT001_IRQn) #define TX_DMA_TC_INT_SRC (INT_SRC_DMA2_TC0) /* Timer0 unit & channel definition */ #define TMR0_UNIT (CM_TMR0_1) #define TMR0_CH (TMR0_CH_B) #define TMR0_FCG_ENABLE() (FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMR0_1, ENABLE)) ///* USART RX/TX pin definition */ #define USART_RX_PORT (GPIO_PORT_A) /* PA10: USART2_RX */ #define USART_RX_PIN (GPIO_PIN_10) #define USART_RX_GPIO_FUNC (GPIO_FUNC_37) #define USART_TX_PORT (GPIO_PORT_A) /* PA9: USART2_TX */ #define USART_TX_PIN (GPIO_PIN_09) #define USART_TX_GPIO_FUNC (GPIO_FUNC_36) /* USART unit definition */ #define USART_UNIT (CM_USART2) #define USART_FCG_ENABLE() (FCG_Fcg3PeriphClockCmd(FCG3_PERIPH_USART2, ENABLE)) /* USART baudrate definition */ #define USART_BAUDRATE (115200UL) /* USART timeout bits definition */ #define USART_TIMEOUT_BITS (2000U) /* USART interrupt definition */ #define USART_TX_CPLT_IRQn (INT002_IRQn) #define USART_TX_CPLT_INT_SRC (INT_SRC_USART2_TCI) #define USART_RX_ERR_IRQn (INT003_IRQn) #define USART_RX_ERR_INT_SRC (INT_SRC_USART2_EI) #define USART_RX_TIMEOUT_IRQn (INT004_IRQn) #define USART_RX_TIMEOUT_INT_SRC (INT_SRC_USART2_RTO) /* Application frame length max definition */ #define APP_FRAME_LEN_MAX (500U) void bsp_uart2_init(void); void test_task2(void *pvParameters); int32_t rs485_send_data(const void *pvBuf,uint32_t u32Len); #endif