20230731_XiaoFuZi_emb/ZheDaXiaoFuZiBoot/Src/Usr/Bsp/McuBspUart.h

247 lines
11 KiB
C
Raw Permalink Normal View History

#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