You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.3 KiB
108 lines
3.3 KiB
2 days ago
|
|
||
|
|
||
|
#ifndef INC_BSP_UART_H_
|
||
|
#define INC_BSP_UART_H_
|
||
|
|
||
|
#include "../../BASE/Inc/BSP/bsp_include.h"
|
||
|
#include "main.h"
|
||
|
#include "bsp_Error.pb.h"
|
||
|
#define UART_Transmit_MAX_NUM 1024
|
||
|
#define UART_Receive_MAX_NUM 100
|
||
|
|
||
|
extern struct UARTHandler RS_485_1_UART_Handler;
|
||
|
extern struct UARTHandler RS_485_2_UART_Handler;
|
||
|
extern struct UARTHandler RS_485_3_UART_Handler;
|
||
|
extern struct UARTHandler RS_485_4_UART_Handler;
|
||
|
extern struct UARTHandler InterCall_DEBUG_UART_Handler;
|
||
|
extern struct UARTHandler E28_SBUS_UART_Handler;
|
||
|
extern struct UARTHandler LTE_7S0_Serial_UART_Handler;
|
||
|
|
||
|
|
||
|
|
||
|
#if defined (hlpuart1Exit)
|
||
|
extern struct UARTHandler LPUART1_UART_Handler;
|
||
|
|
||
|
#endif
|
||
|
|
||
|
uint8_t GF_BSP_UART_Init(void);
|
||
|
|
||
|
void GF_BSP_UARTHandlers_Intialize(
|
||
|
int32_t RS485_1_WaitTime,
|
||
|
int32_t RS485_2_WaitTime,
|
||
|
int32_t RS485_3_WaitTime,
|
||
|
int32_t RS485_4_WaitTime,
|
||
|
int32_t LTE_7S0_Serial_WaitTime,
|
||
|
int32_t InterCall_DEBUG_WaitTime,
|
||
|
int32_t E28_SBUS_WaitTime,
|
||
|
int32_t LPUART1_UART_WaitTime,
|
||
|
int32_t RS485_1_Dispacher_Time,
|
||
|
int32_t RS485_2_Dispacher_Time,
|
||
|
int32_t RS485_3_Dispacher_Time,
|
||
|
int32_t RS485_4_Dispacher_Time,
|
||
|
int32_t LTE_7S0_Serial_Dispacher_Time,
|
||
|
int32_t InterCall_DEBUG_Dispacher_Time,
|
||
|
int32_t E28_SBUS_Dispacher_Time,
|
||
|
int32_t LPUART1_UART_Dispacher_Time
|
||
|
);
|
||
|
|
||
|
//串行发送完成后才能发送第二帧数据,没有做缓冲,如未发送完成,第二次发送无效,丢弃发送数据
|
||
|
void GF_BSP_UART_Transmit(const uint8_t RS485_Index,const uint8_t *pData, uint16_t Size);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct UARTSendHandler
|
||
|
{
|
||
|
uint16_t SendLength;
|
||
|
uint16_t SendListTimePeriod;
|
||
|
uint8_t Tx_Buf[502];
|
||
|
void (*UART_Decode)(uint8_t*, uint16_t); // 发送缓存
|
||
|
struct UARTSendHandler* pNext;
|
||
|
}UARTSendHandler;
|
||
|
|
||
|
|
||
|
struct UARTHandler
|
||
|
{
|
||
|
char startCountFlag; //indicate that to start counting
|
||
|
char send_finished;//indicate decode finished or not
|
||
|
char decode_finished;//indicate decode finished or not 解码完成
|
||
|
uint8_t tmp_Rx_Buf[2]; // temporary data to store received data
|
||
|
|
||
|
uint32_t Wait_time; // the time to wait
|
||
|
uint32_t Wait_Time_Count;
|
||
|
uint32_t SendList_time_Count;
|
||
|
|
||
|
uint32_t SendList_Period;
|
||
|
uint8_t SendListExists;
|
||
|
|
||
|
UART_HandleTypeDef* uart; //UART to use
|
||
|
unsigned char timeSpan; // timer elapsed time
|
||
|
uint8_t Rx_Buf[4096]; // 接收缓存,最大256字节
|
||
|
uint8_t Tx_Buf[2048]; //发送缓存 157,864
|
||
|
uint16_t TxCount;
|
||
|
uint16_t RxCount;
|
||
|
|
||
|
//(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
|
||
|
void (*UART_Tx)(struct UARTHandler*); //void UART_Tx(uint8_t *Tx_Buf,uint16_t TxCount);
|
||
|
void (*UART_Rx)(struct UARTHandler*);
|
||
|
void (*UART_Decode)(uint8_t*, uint16_t); //Decode Rx_Buf
|
||
|
UARTSendHandler *pCurrentUARTSendHadler; //
|
||
|
void (*AddSendList)(struct UARTHandler*, uint8_t*, uint16_t,uint32_t,//这里是修改等待时间
|
||
|
void (*UART_Decode)(uint8_t*, uint16_t));
|
||
|
|
||
|
|
||
|
struct _DispacherController *dispacherController;
|
||
|
};
|
||
|
|
||
|
void UARTHandlerTx(struct UARTHandler *uartHandler);
|
||
|
void UARTHandlerRX(struct UARTHandler *uartHandler);
|
||
|
//void IntializeUARTHandler(struct UARTHandler *uartHandler, UART_HandleTypeDef uart,int32_t WaitTime,unsigned char timeSpan);
|
||
|
void Counting(struct UARTHandler *uartHandler);
|
||
|
|
||
|
|
||
|
void IntializeUARTHandler(struct UARTHandler *uartHandler,
|
||
|
UART_HandleTypeDef *uart, int32_t WaitTime, unsigned char timeSpan,int32_t Dispacher_Time);
|
||
|
void GF_BSP_UART_Timer();
|
||
|
|
||
|
#endif /* INC_BSP_UART_H_ */
|