⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 com.h

📁 STM32 单片机例程
💻 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 + -