101 lines
3.1 KiB
C
101 lines
3.1 KiB
C
/**
|
||
****************************************************************************************************
|
||
* @file usart.h
|
||
* @author XX团队
|
||
* @version V1.0
|
||
* @date 2021-10-14
|
||
* @brief 串口初始化代码(一般是串口1),支持printf
|
||
* @license Copyright (c) 2020-2032,
|
||
****************************************************************************************************
|
||
* @attention
|
||
*
|
||
* 电池管理系统平台:STM32F407
|
||
|
||
|
||
|
||
|
||
*
|
||
* 修改说明
|
||
|
||
* 第一次发布
|
||
*
|
||
****************************************************************************************************
|
||
*/
|
||
|
||
#ifndef _USART_H
|
||
#define _USART_H
|
||
|
||
#include "stdio.h"
|
||
#include "drv_sys.h"
|
||
#include "stm32f4xx_hal.h"
|
||
|
||
#define USART_EN_RX 1 /* 使能(1)/禁止(0)串口1接收 */
|
||
|
||
|
||
typedef struct {
|
||
USART_TypeDef* Instance; // UART实例
|
||
GPIO_TypeDef* TxPort; // Tx引脚的GPIO端口
|
||
uint16_t TxPin; // Tx引脚的GPIO引脚
|
||
GPIO_TypeDef* RxPort; // Rx引脚的GPIO端口
|
||
uint16_t RxPin; // Rx引脚的GPIO引脚
|
||
uint32_t WordLength; // 字长
|
||
uint32_t StopBits; // 停止位
|
||
uint32_t Parity; // 校验
|
||
uint32_t Mode; // 工作模式
|
||
uint32_t HwFlowCtl; // 硬件流控制
|
||
uint32_t OverSampling; // 过采样
|
||
} UARTConfig;
|
||
|
||
|
||
|
||
// 声明初始化所有配置的UART函数
|
||
void InitUARTs(uint32_t baudRate);
|
||
|
||
|
||
|
||
/*******************************************************************************************************/
|
||
/* 引脚 和 串口 定义 A2TX ,A3RX
|
||
* 默认是针对USART1的.
|
||
* 注意: 通过修改这12个宏定义,可以支持USART1~UART7任意一个串口.
|
||
*/
|
||
|
||
#define USART_TX_GPIO_PORT GPIOA
|
||
#define USART_TX_GPIO_PIN GPIO_PIN_2
|
||
#define USART_TX_GPIO_AF GPIO_AF7_USART1
|
||
#define USART_TX_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0) /* 发送引脚时钟使能 */
|
||
|
||
#define USART_RX_GPIO_PORT GPIOA
|
||
#define USART_RX_GPIO_PIN GPIO_PIN_3
|
||
#define USART_RX_GPIO_AF GPIO_AF7_USART1
|
||
#define USART_RX_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0) /* 接收引脚时钟使能 */
|
||
|
||
#define USART_UX USART2
|
||
#define USART_UX_IRQn USART2_IRQn
|
||
#define USART_UX_IRQHandler USART2_IRQHandler
|
||
#define USART_UX_CLK_ENABLE() do{ __HAL_RCC_USART2_CLK_ENABLE(); }while(0) /* USART2 时钟使能 */
|
||
|
||
/*******************************************************************************************************/
|
||
|
||
#define USART_REC_LEN 200 /* 定义最大接收字节数 200 */
|
||
|
||
#define RXBUFFERSIZE 1 /* 缓存大小 */
|
||
|
||
extern UART_HandleTypeDef g_uart1_handle; /* UART句柄 */
|
||
extern UART_HandleTypeDef g_uart3_handle; /* UART句柄 */
|
||
extern UART_HandleTypeDef g_uart4_handle; /* UART句柄 */
|
||
extern uint8_t g_usart_rx_buf[USART_REC_LEN]; /* 接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 */
|
||
extern uint16_t g_usart_rx_sta; /* 接收状态标记 */
|
||
extern uint8_t rx_buffer[RXBUFFERSIZE]; /* HAL库USART接收Buffer */
|
||
|
||
|
||
void usart_init(uint32_t baudrate); /* 串口初始化函数 */
|
||
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|