📄 com.h
字号:
#if !defined (_COM_H)
#define _COM_H
#define SEND_HEADER ( (uint8)0x02 )
//定义接收协议包的过程
#define NO_HEADER 0 //还没收到头
#define RECEIVE_DATA 1 //已经收到头,开始接收数据
#define RECEIVE_OVER 2 //整个协议包接收完毕
//定义发送协议包的过程
#define NO_SEND 0 //还没发送头
#define START_SEND 1 //开始发送
#define SEND_DATA 2 //发送完毕
//#define SEND_OVER 3 //发送完毕
//定义数据包&缓冲大小
#define FRAME_HEADER_LEN (8) //协议包帧头长度
#define RECEIVE_BUFF_SIZE (1024) //接收数据包长度
#define SEND_BUFF_SIZE (64) //发送数据包长度
//定义应答状态
#define ACK_OK 0 //命令执行成功
#define ACK_ERR 1 //命令执行失败
#define ACK_UNDEFINE 2 //不支持该命令
#define ACK_INVALID_DATA 3 //无效的数据
typedef struct
{
uint16 chk; //协议包校验
uint16 tLen; //协议包总长度
uint16 object_addr; //目的地址
uint16 cmd; //功能号
}struPROTOCOL_Header;
typedef struct
{
uint8 volatile start; //接收到头标志
uint16 rLen; //实际接收数据量
uint16 rrLen; //需要接收数据量
struPROTOCOL_Header header;
uint8 buf[RECEIVE_BUFF_SIZE]; //数据包
}struPROTOCOL_Receive;
typedef struct
{
uint8 volatile start; //发送到头标志
uint16 sLen; //发送数据量
struPROTOCOL_Header header;
uint8 buf[SEND_BUFF_SIZE]; //数据包
}struPROTOCOL_Send;
void USART1_InitConfig(uint32 BaudRate);
void USART1_IRQFun(void);
void SetLocalAddr(uint16 temp);
void SetRemoteAddr(uint16 temp);
uint8 testReceiveOver(void);
void WaitSendOver(void);
uint8 *getSendBuf(void);
uint8 *getReceiveBuf(void);
//返回命令号
uint16 getCmd(void);
/**************************************************************************************
* 函数原型:uint8 Set_Baud_Rate(UartBaudRates BaudRate)
* 函数功能:初始化串口,设置波特率
* 输入参数:
* 输出参数:
* 函数说明:根据定义的晶振频率,在表中查得对应的定时器初值,如果查得为0,说明无对应得值,
应该修改设置波特率的设置,或者更换晶振
**************************************************************************************/
//uint8 Set_Baud_Rate(UartBaudRates BaudRate);
uint8 Set_Baud_Rate(uint32 BaudRate);
/**************************************************************************************
* 函数原型:void InitCom(void)
* 函数功能:清空接收和发送缓冲区,初始化串口,设置波特率
* 输入参数:
* 输出参数:
* 函数说明:
**************************************************************************************/
void InitCom(void);
void init_Receive(void);
struPROTOCOL_Send *getsend(void);
//发送应答
void SendFunAck(uint16 len);
void DebugSendBuf(uint8* buf, uint32 len);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -