1.头文件的中的使用的变量定义:
//***********************************串口相关***********************************************//
enum uart_statu_type
{
UART_POWER_UP,//上电状态
UART_STANDBY, //初始化串口状态
UART_RUNNING, //初始化完成后的正常状态
UART_RECEIVING,//正在接收的状态
UART_RECEIVED, //字节间超时,则是接收完成状态
UART_TRANSMITTING,//正在发送状态
};
extern u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 USART_RX_STA; //接收状态标记
#define RXBUFFERSIZE 1 //缓存大小
BPLC_USART_EXT u8 aRxBuffer[RXBUFFERSIZE];//HAL库USART接收Buffer
#define UART2_BUFF_SIZE 1100//字节最长
#define UART2_TX_BUFF_SIZE 100//字节最长 100字节
extern UART_HandleTypeDef UART2_Handler; //UART句柄
extern unsigned char uart2_tx_buff[UART2_TX_BUFF_SIZE];//写数据
extern enum uart_tx_statu_type uart2_tx_statu;//写串口的相关状态
extern unsigned char need_re_tx;//写标志
extern unsigned short uart2_tx_buff_len;//写长度
extern unsigned char uart2_buff[UART2_BUFF_SIZE];//缓存数据
extern enum uart_statu_type uart2_statu ;//读状态相关
extern unsigned short uart2_buff_index;//标志位
extern unsigned short uart2_buff_len;//读长度
2.功能函数的定义
/*******************************************************************************
函 数 名 : data_uart_init
功能描述 : 数据串口的初始化
入 参: 无
出 参: 无
*******************************************************************************/
void data_uart2_init(void)
{
printf("restart uart2\n\r");
need_re_tx = 0;
uart2_tx_buff_len = 0;
memset(uart2_buff, 0x00, sizeof(uart2_buff));
memset(uart2_tx_buff, 0x00, sizeof(uart2_tx_buff));
Uart2_Init(115200);
}
/*******************************************************************************
函 数 名 : Uart2_Init
功能描述 : 数据串口的初始化
入 参: 无
出 参: 无
*******************************************************************************/
void Uart2_Init(u32 bound)
{
UART2_Handler.Instance = USART2;
UART2_Handler.Init.BaudRate = bound;
UART2_Handler.Init.WordLength = UART_WORDLENGTH_8B;
UART2_Handler.Init.StopBits = UART_STOPBITS_1;
UART2_Handler.Init.Parity = UART_PARITY_NONE;
UART2_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART2_Handler.Init.Mode = UART_MODE_TX_RX;
HAL_UART_Init(&UART2_Handler);
if (HAL_UART_Init(&UART2_Handler) != HAL_OK)
{
Error_Handler();
}
start_uart2();
}
/*******************************************************************************
函 数 名 : start_uart
功能描述 :
入 参:
出 参:
*******************************************************************************/
void start_uart2(void)
{
uart2_statu = UART_RUNNING;
uart2_tx_statu = UART_TX_RUNNING;
Stop_Soft_Timer(TIMER_UART2_BYTE_TIMEOUT);
uart2_buff_index = 0;
uart2_buff_len = 0;