180 lines
5.6 KiB
C
180 lines
5.6 KiB
C
|
||
#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 */
|
||
|