247 lines
11 KiB
C
247 lines
11 KiB
C
#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
|