/**
|
******************************************************************************
|
* File Name : USART.h
|
* Description : This file provides code for the configuration
|
* of the USART instances.
|
******************************************************************************
|
* @attention
|
*
|
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
|
* All rights reserved.</center></h2>
|
*
|
* This software component is licensed by ST under Ultimate Liberty license
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
* the License. You may obtain a copy of the License at:
|
* www.st.com/SLA0044
|
*
|
******************************************************************************
|
*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
#ifndef __usart_H
|
#define __usart_H
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
/* Includes ------------------------------------------------------------------*/
|
#include "main.h"
|
|
typedef enum
|
{
|
RS485_RECV = 0,
|
RS485_SEND
|
}RS485DirCtrl_e;
|
|
#define RS485_DIR_PORT GPIOA
|
#define RS485_DIR_PIN GPIO_PIN_1
|
/* RS485 TX/RX Control */
|
#define RS485_TX_ENABLE() HAL_Delay(100);\
|
HAL_GPIO_WritePin(RS485_DIR_PORT, RS485_DIR_PIN, GPIO_PIN_SET);\
|
HAL_Delay(100);
|
|
#define RS485_RX_ENABLE() HAL_Delay(100);\
|
HAL_GPIO_WritePin(RS485_DIR_PORT, RS485_DIR_PIN, GPIO_PIN_RESET);\
|
HAL_Delay(100);
|
|
#define PRINTF(...) VcomSend(__VA_ARGS__)
|
#define ECHO_ERROR(x) PRINTF("[%s][%d]:%s\r\n", __FUNCTION__, __LINE__, x)
|
|
#pragma pack(1)
|
|
#define FreeUart1Buffer() Debug_Rxbuffer.Locked = 0; Debug_Rxbuffer.RxSize=0
|
#define Uart1BufferIsEmpty (Debug_Rxbuffer.RxSize == 0 ? 1 : 0)
|
#define Uart1BufferIsReadable() (Debug_Rxbuffer.Locked ? 1 : 0)
|
|
//#define LockUart3Buffer() Uart3_Rxbuffer.Locked = 1
|
//#define FreeUart3Buffer() Uart3_Rxbuffer.Locked = 0; Uart3_Rxbuffer.RxSize=0; memset(Uart3_Rxbuffer.RxBuffer, 0x0, UART_RINGBUF_SIZE)
|
//#define Uart3BufferIsEmpty (Uart3_Rxbuffer.RxSize == 0 ? 1 : 0)
|
//#define Uart3BufferIsReadable() (Uart3_Rxbuffer.Locked ? 1 : 0)
|
|
#define UART_RINGBUF_SIZE 255
|
typedef struct Uart_Rxbuffer_s
|
{
|
uint8_t RxBuffer[UART_RINGBUF_SIZE]; /* UART receive buffer*/
|
uint32_t RxSize; /* Current data length in UART receive buffer */
|
uint32_t Time; /* Last receive time */
|
uint8_t Locked; /* Buffer is busy */
|
}Uart_Rxbuffer_t;
|
|
typedef struct
|
{
|
uint8_t *pRear; //ÔÚÖжϺ¯ÊýÖиü¸Ä
|
uint8_t *pFront; //ÔÚÖ÷Ñ»·Öиü¸Ä
|
} UartBuffer_t;
|
|
#pragma pack()
|
|
extern Uart_Rxbuffer_t Debug_Rxbuffer;
|
//extern Uart_Rxbuffer_t Uart3_Rxbuffer;
|
|
extern UART_HandleTypeDef huart1;
|
extern UART_HandleTypeDef huart2;
|
|
void Board_USART1Init(void);
|
void Board_USART1DeInit(void);
|
void Board_USART1RX_Enable(void);
|
void Board_USART1RX_Disable(void);
|
|
void Board_USART2Init(void);
|
void Board_USART2DeInit(void);
|
int8_t Board_USART2Recv(uint8_t *pFmt, uint16_t u16TimeOut);
|
int8_t Board_USART2end(const uint8_t *pFmt, uint8_t u8Len);
|
|
//int8_t Board_USART2Test(void);
|
|
|
|
void VcomSend( char *format, ... );
|
|
|
#ifdef __cplusplus
|
}
|
#endif
|
#endif /*__ usart_H */
|
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|