OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3081|回复: 1

我的通信口比较多,有2个can3个串口,所以我想用结构体来写,大家觉得怎么样?

[复制链接]

22

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2014-11-3
在线时间
1 小时
发表于 2015-8-3 16:33:06 | 显示全部楼层 |阅读模式
5金钱

    struct
    {
    unsigned char TYPE;                   //类型
    unsigned char SN;                            
    unsigned char MD;                     //命令
    unsigned char CM;
    unsigned char P1;
    unsigned char P2;
    unsigned char P3;
    unsigned char P4;
    unsigned char P5;
    unsigned char CK1;
    unsigned char CK2;   
    unsigned char Start;
    unsigned char End;
    unsigned char length;                         //一个帧的基本长度
    }REV;

    struct
    {                        
    unsigned char TYPE                          //=ArmComModule.REV.BUFFER[]  类型
    unsigned char SN;                            
    unsigned char MD;
    unsigned char CM;
    unsigned char P1;
    unsigned char P2;
    unsigned char P3;
    unsigned char P4;
    unsigned char P5;
    unsigned char CK1;
    unsigned char CK2;   
    unsigned char Start;
    unsigned char End;
    unsigned char length;                         //一个帧的基本长度
    }SEND;


struct Communicatemodule
{  

    unsigned char RevBuffSize;                    //接收缓冲区大小
    unsigned char SendBuffSize;                   //发送缓冲区大小
    unsigned char *PushData;                      //定义指向char的地址PushData
    unsigned char RevBuf[RevBuffSize];            //串口接受缓冲区
    unsigned char TraBuf[SendBuffSize];           //串口发送缓冲区
    unsigned char RxdCnt;                         //串口接受字节个数计数器
    unsigned char TxdCnt;                         //串口发送字节个数计数器
    unsigned char sendptr                         //发送指针
    unsigned char RevFlag;                        //通讯响应 作为从机的通信处理标识
    unsigned char SendFlag;                       //发送标识
    unsigned char wptr;                           //写指针
    unsigned char rptr;                           //读取指针
    unsigned char overflow;                       //定义溢出
    SEND;                                         //发送结构体
    REV;                                          //接收结构体
    void (*send)(unsigned char l,unsigned int point,unsigned char whichone);  //发送函数
    void (*selfcheck)(void);                      //通信模块自检测  

}Arm,DRIVER,CAN;

 

struct
{
ARM;
DRIVER;
CAN;

}COMM


到时候我要修改比较方便比如,我要把can的数据头都改下,只要COMM.CAN.REV.START= 什么就行了。你们觉得怎么样这样?

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-3 16:33:07 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 00:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表