E015.D.011-FXLS90230/Drivers/SYSTEM/usart.h

180 lines
5.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _USART_H
#define _USART_H
//#ifdef __cplusplus
// extern "C" {
//#endif
//////////////////////////////////////////////////////////////////////////////////
//#include "stm32l4xx.h"
//#include "General_type.h"
//#include "stdio.h"
//#define DEBUG_MODE
////#define BAD_DEBUG //旧板子的PD2 控制usart1的发送脚不能拉高了所以换个引脚
////#define Board_VerE
////#define TRANS_SPECIAL
//#ifndef IN_USART
//#define EX_USART extern
// #else
//#define EX_USART
//#endif
//#ifdef Board_VerE
// #define UART_RD1_PIN GPIO_PIN_3
// #define UART_RD1_PORT GPIOB
// #define UART1_RX_PIN GPIO_PIN_10
// #define UART1_PORT GPIOA
// #define UART1_TX_PIN GPIO_PIN_9
//#else
//
// #ifdef BAD_DEBUG
// #define UART_RD1_PIN GPIO_PIN_3
// #define UART_RD1_PORT GPIOB
// #else
// #define UART_RD1_PIN GPIO_PIN_8
// #define UART_RD1_PORT GPIOB
// #endif
// #define UART1_RX_PIN GPIO_PIN_10//GPIO_PIN_7
// #define UART1_PORT GPIOA//GPIOB
// #define UART1_TX_PIN GPIO_PIN_9//GPIO_PIN_6
//#endif
//#define RX1_UART() HAL_GPIO_WritePin(UART_RD1_PORT,UART_RD1_PIN,GPIO_PIN_RESET)
//#define TX1_UART() HAL_GPIO_WritePin(UART_RD1_PORT,UART_RD1_PIN,GPIO_PIN_SET)
////#define UART3_RD_PIN GPIO_PIN_15
////#define UART3_RD_PORT GPIOA
////#define UART3_RX_PIN GPIO_PIN_11
////#define UART3_PORT GPIOC
////#define UART3_TX_PIN GPIO_PIN_10
////#define RX3_UART() HAL_GPIO_WritePin(UART3_RD_PORT,UART3_RD_PIN,GPIO_PIN_RESET)
////#define TX3_UART() HAL_GPIO_WritePin(UART3_RD_PORT,UART3_RD_PIN,GPIO_PIN_SET)
//#define USART3_RX_LEN 100
//#define USART1_TX_LEN 150 //定义最大接收字节数 200
//#define USART1_RX_LEN 50
//#define RADDR 0x1037
////#define RADDR 0x1037
////EX_USART u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
////EX_USART u16 USART_RX_STA; //接收状态标记
////EX_USART UART_HandleTypeDef UART1_Handler; //UART句柄
//EX_USART UART_HandleTypeDef huart1;//,huart3;
//EX_USART DMA_HandleTypeDef hdma_usart1_rx;
//EX_USART DMA_HandleTypeDef hdma_usart1_tx;
//typedef struct{
// uint8_t TxBuff[USART1_TX_LEN];
// uint16_t TxSize;
// uint8_t Tx_end_flag;
// uint8_t RxBuff[USART1_RX_LEN];
// uint8_t aRxBuff;
// uint16_t RxSize;
// uint8_t Rx_flag;
//}USART_BuffTypeDef;
//EX_USART USART_BuffTypeDef usart1_buf,usart3_buf;
//EX_USART uint8_t wireless_data[50];
////如果想串口中断接收,请不要注释以下宏定义
////EX_USART void uart3_init(u32 bound);
//EX_USART void debug_printf(char *information,int len);
//EX_USART void MX_USART1_UART_Init(uint32_t bound);
//EX_USART void uart_init(uint32_t bound);
//EX_USART void HAL_UART_IDLECallback(UART_HandleTypeDef *huart);
//EX_USART void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
//EX_USART void MX_DMA_Init(void) ;
//EX_USART void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
//EX_USART void Error_Handler(uint8_t flag);
////EX_USART void Error_Handler(uint8_t flag);
//#ifdef __cplusplus
//}
//#endif
//#endif
//#include "stdio.h"
//#include "./SYSTEM/sys/sys.h"
#include "main.h"
//#include "stm32l433xx.h"
//#include "stm32l4xx.h"
#include "General_type.h"
//#include "system.h"
#include <stdint.h>
#include <stdbool.h>
#define COMM_FRAME_HEAD 0xAA
#define COMPARE55 0x55
#define FREUENCYDATA 0x10
#define THORGHFARE0 0x80
#define THORGHFARE1 0x81
#define DIELECTRICLEGTH 0x08 //数据长度8
//串口1收发控制端
#define RS485_TX_EN HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET)
#define RS485_RX_EN HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)
//串口2收发控制端
#define RS485_UART3TX_EN HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET)
#define RS485_UART3RX_EN HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET)
#define UART_RX_BUFFER_SIZE 128
#define UART_TX_BUFFER_SIZE 64
typedef enum {
UART_OK,
UART_ERROR,
UART_BUSY
} UART_Status;
//*****************结构定义******************************************
enum tagUSARTSTATUS {RcvSyn,RcvtargetAddress,RcvsourceAddress,RcvLen,RcvaData,ChkSum,CmdOperate};
//串口接收状态,分为:接收同步位、接收首标识位、接收目的地址、接收源地址、接收数据长度、接收数据、校验、命令处理
struct tagUSARTDATA
{
unsigned char ucHead; //首标识位,数据帧的起始位
unsigned char ucRcvtargetAddress; //目的地址,1byte数据帧接收设备地址
unsigned char ucRcvsourceAddress; //源地址,1byte数据帧发送源设备地址
unsigned int ucRcvDataLen;
unsigned char ucRepDataLen;
unsigned char ucDataCount; //串口接收数据计数器
//unsigned char aData[170]; //数据位
unsigned char aData[50]; //数据位
unsigned char ucSendChkCrc ; //发送校验和
unsigned char ucReceiveChkCrc; //接收校验和
unsigned char ucCommand; //串口命令
enum tagUSARTSTATUS usStatus; //串口接收状态
unsigned char ucReptargetAddress; //目的地址,1byte数据帧接收设备地址
unsigned char ucRepsourceAddress; //源地址,1byte数据帧发送源设备地址
unsigned int ucOverTimeCnt;
};
extern struct tagUSARTDATA g_udUsart3Data; //串口2
extern void UART_Init(uint32_t baudrate);
extern void USART3_Init(uint32_t baudrate);
extern void Init_485EN(void);
extern void InitUart3_485EN(void);
extern void UART_SendStr(uint8_t *PData,uint16_t Datalen);
extern UART_Status UART_SendByte(uint8_t data);
extern UART_Status UART_SendString(const char *str);
extern UART_Status UART3_SendByte(uint8_t data);
extern void UART3_SendStr(uint8_t *PData,uint16_t Datalen);
extern void Uart3Rcv(unsigned char ucReadData); //串口2数据处理
extern void Uart3data_Processing(void); //串口2响应
#endif /* __UART_H */