#ifndef _MCU_BSP_UART_H_ #define _MCU_BSP_UART_H_ #include "stm32f1xx_hal.h" /* 用户串口回调函数定义 */ typedef void (*UART_SEND_CALLBACK)(void); typedef void (*UART_RECV_CALLBACK)(unsigned char); typedef struct { uint32_t BaudRate; uint32_t WordLength; uint32_t StopBits; uint32_t Parity; uint32_t Mode; } MCU_BSP_UART_CONF; /* 串口类型 */ #define MCU_BSP_TTL_UART_TYPE 0 #define MCU_BSP_RS232_UART_TYPE 1 #define MCU_BSP_RS485_UART_TYPE 2 /* 串口1的配置 */ #define MCU_BSP_UART1_USE_FLAG 1 // 硬件电路上是否使用 #define MCU_BSP_UART1_ID 1 #define MCU_BSP_UART1_TYPE MCU_BSP_RS232_UART_TYPE #define MCU_BSP_UART1_BAUDRATE 9600 // 波特率 #define MCU_BSP_UART1_WORDLENGTH UART_WORDLENGTH_8B // 字长 #define MCU_BSP_UART1_STOPBITS UART_STOPBITS_1 // 停止位 #define MCU_BSP_UART1_PARITY UART_PARITY_NONE // 奇偶校验位 #define MCU_BSP_UART1_HWFLOWCTL UART_HWCONTROL_NONE // 无硬件控制流 #define MCU_BSP_UART1_MODE UART_MODE_TX_RX // 串口工作模式 #define MCU_BSP_UART1_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE() #define MCU_BSP_UART1_TX_GPIO_CLK() __HAL_RCC_GPIOA_CLK_ENABLE() #define MCU_BSP_UART1_TX_GPIO_PIN GPIO_PIN_9 #define MCU_BSP_UART1_TX_GPIO_PORT GPIOA #define MCU_BSP_UART1_TX_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART1_TX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART1_TX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART1_RX_GPIO_CLK() __HAL_RCC_GPIOA_CLK_ENABLE() #define MCU_BSP_UART1_RX_GPIO_PIN GPIO_PIN_10 #define MCU_BSP_UART1_RX_GPIO_PORT GPIOA #define MCU_BSP_UART1_RX_GPIO_MODE GPIO_MODE_INPUT #define MCU_BSP_UART1_RX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART1_RX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART1_IRQn USART1_IRQn #define MCU_BSP_UART1_IRQHandler USART1_IRQHandler #define MCU_BSP_UART1_FORCE_RESET() __HAL_RCC_USART1_FORCE_RESET() #define MCU_BSP_UART1_RELEASE_RESET() __HAL_RCC_USART1_RELEASE_RESET() #define MCU_BSP_UART1_RS485_CTRL_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART1_RS485_CTRL_GPIO_PIN GPIO_PIN_12 #define MCU_BSP_UART1_RS485_CTRL_GPIO_PORT GPIOC #define MCU_BSP_UART1_RS485_CTRL_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART1_RS485_CTRL_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART1_RS485_CTRL_GPIO_SPEED GPIO_SPEED_FREQ_HIGH /* 串口2的配置 */ #define MCU_BSP_UART2_USE_FLAG 1 // 硬件电路上是否使用 #define MCU_BSP_UART2_ID 2 #define MCU_BSP_UART2_TYPE MCU_BSP_TTL_UART_TYPE #define MCU_BSP_UART2_BAUDRATE 9600 // 波特率 #define MCU_BSP_UART2_WORDLENGTH UART_WORDLENGTH_8B // 字长 #define MCU_BSP_UART2_STOPBITS UART_STOPBITS_1 // 停止位 #define MCU_BSP_UART2_PARITY UART_PARITY_NONE // 奇偶校验位 #define MCU_BSP_UART2_HWFLOWCTL UART_HWCONTROL_NONE // 无硬件控制流 #define MCU_BSP_UART2_MODE UART_MODE_TX_RX // 串口工作模式 #define MCU_BSP_UART2_CLK_ENABLE() __HAL_RCC_USART2_CLK_ENABLE() #define MCU_BSP_UART2_TX_GPIO_CLK() __HAL_RCC_GPIOA_CLK_ENABLE() #define MCU_BSP_UART2_TX_GPIO_PIN GPIO_PIN_2 #define MCU_BSP_UART2_TX_GPIO_PORT GPIOA #define MCU_BSP_UART2_TX_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART2_TX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART2_TX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART2_RX_GPIO_CLK() __HAL_RCC_GPIOA_CLK_ENABLE() #define MCU_BSP_UART2_RX_GPIO_PIN GPIO_PIN_3 #define MCU_BSP_UART2_RX_GPIO_PORT GPIOA #define MCU_BSP_UART2_RX_GPIO_MODE GPIO_MODE_INPUT #define MCU_BSP_UART2_RX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART2_RX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART2_IRQn USART2_IRQn #define MCU_BSP_UART2_IRQHandler USART2_IRQHandler #define MCU_BSP_UART2_FORCE_RESET() __HAL_RCC_USART2_FORCE_RESET() #define MCU_BSP_UART2_RELEASE_RESET() __HAL_RCC_USART2_RELEASE_RESET() #define MCU_BSP_UART2_RS485_CTRL_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART2_RS485_CTRL_GPIO_PIN GPIO_PIN_12 #define MCU_BSP_UART2_RS485_CTRL_GPIO_PORT GPIOC #define MCU_BSP_UART2_RS485_CTRL_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART2_RS485_CTRL_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART2_RS485_CTRL_GPIO_SPEED GPIO_SPEED_FREQ_HIGH /* 串口3的配置 */ #define MCU_BSP_UART3_USE_FLAG 1 // 硬件电路上是否使用 #define MCU_BSP_UART3_ID 3 #define MCU_BSP_UART3_TYPE MCU_BSP_TTL_UART_TYPE #define MCU_BSP_UART3_BAUDRATE 9600 // 波特率 #define MCU_BSP_UART3_WORDLENGTH UART_WORDLENGTH_8B // 字长 #define MCU_BSP_UART3_STOPBITS UART_STOPBITS_1 // 停止位 #define MCU_BSP_UART3_PARITY UART_PARITY_NONE // 奇偶校验位 #define MCU_BSP_UART3_HWFLOWCTL UART_HWCONTROL_NONE // 无硬件控制流 #define MCU_BSP_UART3_MODE UART_MODE_TX_RX // 串口工作模式 #define MCU_BSP_UART3_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE() #define MCU_BSP_UART3_TX_GPIO_CLK() __HAL_RCC_GPIOD_CLK_ENABLE() #define MCU_BSP_UART3_TX_GPIO_PIN GPIO_PIN_8 #define MCU_BSP_UART3_TX_GPIO_PORT GPIOD #define MCU_BSP_UART3_TX_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART3_TX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART3_TX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART3_RX_GPIO_CLK() __HAL_RCC_GPIOD_CLK_ENABLE() #define MCU_BSP_UART3_RX_GPIO_PIN GPIO_PIN_9 #define MCU_BSP_UART3_RX_GPIO_PORT GPIOD #define MCU_BSP_UART3_RX_GPIO_MODE GPIO_MODE_INPUT #define MCU_BSP_UART3_RX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART3_RX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART3_IRQn USART3_IRQn #define MCU_BSP_UART3_IRQHandler USART3_IRQHandler #define MCU_BSP_UART3_FORCE_RESET() __HAL_RCC_USART3_FORCE_RESET() #define MCU_BSP_UART3_RELEASE_RESET() __HAL_RCC_USART3_RELEASE_RESET() #define MCU_BSP_UART3_RS485_CTRL_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART3_RS485_CTRL_GPIO_PIN GPIO_PIN_12 #define MCU_BSP_UART3_RS485_CTRL_GPIO_PORT GPIOC #define MCU_BSP_UART3_RS485_CTRL_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART3_RS485_CTRL_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART3_RS485_CTRL_GPIO_SPEED GPIO_SPEED_FREQ_HIGH /* 串口4的配置 */ #define MCU_BSP_UART4_USE_FLAG 1 // 硬件电路上是否使用 #define MCU_BSP_UART4_ID 4 #define MCU_BSP_UART4_TYPE MCU_BSP_RS485_UART_TYPE #define MCU_BSP_UART4_BAUDRATE 9600 // 波特率 #define MCU_BSP_UART4_WORDLENGTH UART_WORDLENGTH_8B // 字长 #define MCU_BSP_UART4_STOPBITS UART_STOPBITS_1 // 停止位 #define MCU_BSP_UART4_PARITY UART_PARITY_NONE // 奇偶校验位 #define MCU_BSP_UART4_HWFLOWCTL UART_HWCONTROL_NONE // 无硬件控制流 #define MCU_BSP_UART4_MODE UART_MODE_TX_RX // 串口工作模式 #define MCU_BSP_UART4_CLK_ENABLE() __HAL_RCC_UART4_CLK_ENABLE() #define MCU_BSP_UART4_TX_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART4_TX_GPIO_PIN GPIO_PIN_10 #define MCU_BSP_UART4_TX_GPIO_PORT GPIOC #define MCU_BSP_UART4_TX_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART4_TX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART4_TX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART4_RX_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART4_RX_GPIO_PIN GPIO_PIN_11 #define MCU_BSP_UART4_RX_GPIO_PORT GPIOC #define MCU_BSP_UART4_RX_GPIO_MODE GPIO_MODE_INPUT #define MCU_BSP_UART4_RX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART4_RX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART4_IRQn UART4_IRQn #define MCU_BSP_UART4_IRQHandler UART4_IRQHandler #define MCU_BSP_UART4_FORCE_RESET() __HAL_RCC_UART4_FORCE_RESET() #define MCU_BSP_UART4_RELEASE_RESET() __HAL_RCC_UART4_RELEASE_RESET() #define MCU_BSP_UART4_RS485_CTRL_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART4_RS485_CTRL_GPIO_PIN GPIO_PIN_9 #define MCU_BSP_UART4_RS485_CTRL_GPIO_PORT GPIOC #define MCU_BSP_UART4_RS485_CTRL_GPIO_MODE GPIO_MODE_OUTPUT_PP #define MCU_BSP_UART4_RS485_CTRL_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART4_RS485_CTRL_GPIO_SPEED GPIO_SPEED_FREQ_HIGH /* 串口5的配置 */ #define MCU_BSP_UART5_USE_FLAG 1 // 硬件电路上是否使用 #define MCU_BSP_UART5_ID 5 #define MCU_BSP_UART5_TYPE MCU_BSP_TTL_UART_TYPE #define MCU_BSP_UART5_BAUDRATE 115200 // 波特率 #define MCU_BSP_UART5_WORDLENGTH UART_WORDLENGTH_8B // 字长 #define MCU_BSP_UART5_STOPBITS UART_STOPBITS_1 // 停止位 #define MCU_BSP_UART5_PARITY UART_PARITY_NONE // 奇偶校验位 #define MCU_BSP_UART5_HWFLOWCTL UART_HWCONTROL_NONE // 无硬件控制流 #define MCU_BSP_UART5_MODE UART_MODE_TX_RX // 串口工作模式 #define MCU_BSP_UART5_CLK_ENABLE() __HAL_RCC_UART5_CLK_ENABLE() #define MCU_BSP_UART5_TX_GPIO_CLK() __HAL_RCC_GPIOC_CLK_ENABLE() #define MCU_BSP_UART5_TX_GPIO_PIN GPIO_PIN_12 #define MCU_BSP_UART5_TX_GPIO_PORT GPIOC #define MCU_BSP_UART5_TX_GPIO_MODE GPIO_MODE_AF_PP #define MCU_BSP_UART5_TX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART5_TX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART5_RX_GPIO_CLK() __HAL_RCC_GPIOD_CLK_ENABLE() #define MCU_BSP_UART5_RX_GPIO_PIN GPIO_PIN_2 #define MCU_BSP_UART5_RX_GPIO_PORT GPIOD #define MCU_BSP_UART5_RX_GPIO_MODE GPIO_MODE_INPUT #define MCU_BSP_UART5_RX_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART5_RX_GPIO_SPEED GPIO_SPEED_FREQ_HIGH #define MCU_BSP_UART5_IRQn UART5_IRQn #define MCU_BSP_UART5_IRQHandler UART5_IRQHandler #define MCU_BSP_UART5_FORCE_RESET() __HAL_RCC_UART5_FORCE_RESET() #define MCU_BSP_UART5_RELEASE_RESET() __HAL_RCC_UART5_RELEASE_RESET() #define MCU_BSP_UART5_RS485_CTRL_GPIO_CLK() __HAL_RCC_GPIOG_CLK_ENABLE() #define MCU_BSP_UART5_RS485_CTRL_GPIO_PIN GPIO_PIN_8 #define MCU_BSP_UART5_RS485_CTRL_GPIO_PORT GPIOG #define MCU_BSP_UART5_RS485_CTRL_GPIO_MODE GPIO_MODE_OUTPUT_PP #define MCU_BSP_UART5_RS485_CTRL_GPIO_PULL GPIO_PULLUP #define MCU_BSP_UART5_RS485_CTRL_GPIO_SPEED GPIO_SPEED_FREQ_HIGH /* 串口初始化,内部会直接启动接收 */ int McuBspUartInit(uint8_t UartId, MCU_BSP_UART_CONF *conf, UART_SEND_CALLBACK SendCallback, UART_RECV_CALLBACK RecvCallback); /* 串口发送 */ int McuBspUartSend(uint8_t UartId, uint8_t* tbuf, uint16_t tbuflen); /* 串口开启接收 */ void McuBspUartStartRecv(uint8_t UartId); /* uart wakeup */ void McuBspUart1WakeUp(void); /* uart wakeup */ void McuBspUart2WakeUp(void); /* uart wakeup */ void McuBspUart3WakeUp(void); /* uart wakeup */ void McuBspUart4WakeUp(void); /* uart wakeup */ void McuBspUart5WakeUp(void); /* uart sleep */ void McuBspUartSleep(void); #endif