//======================================================================
//文件名称：includes.h
//功能概要：应用工程总头文件
//版权所有：苏大arm技术中心(sumcu.suda.edu.cn)
//版本更新：2017.2.1  V1.0， 2018.10.30 版本A.02
//功能描述：（1）包含用到的构件；（2）宏常数定义；（3）自定义数据类型；
//      （4）声明全局变量。
//备    注：本文件共有两类代码，一类为【根据实际需要增删】，此类代码根据具体
//    项目需求进行更改；另一类为【不变】，此类代码与具体项目无关，是通用的，
//    无需根据具体项目进行更改。
//======================================================================

#ifndef _INCLUDES_H     //防止重复定义（开头）
#define _INCLUDES_H

//----------------------------------------------------------------------
//（1）【根据实际需要增删】包含用到的构件
#include "user.h"
#include "printf.h"

//----------------------------------------------------------------------
//（2）【根据实际需要增删】全局使用的宏常数。命名规范见注1。



//----------------------------------------------------------------------
//（3）【根据实际需要增删】自定义数据类型


//----------------------------------------------------------------------

//（4）【根据实际需要增删】声明全局变量。命名规范见注2。
//【不动】宏定义全局变量前缀G_VAR_PREFIX。实现原理见注3。
#ifdef GLOBLE_VAR                      //GLOBLE_VAR在main.c文件中有宏定义
  #define G_VAR_PREFIX                 //前缀G_VAR_PREFIX定义为空
#else                                  //GLOBLE_VAR在非main.c文件中无定义
  #define G_VAR_PREFIX extern         //前缀G_VAR_PREFIX定义为"extern"
#endif
//软件框架保留的全局变量
G_VAR_PREFIX uint_64   gTimeSec;        //时间戳
G_VAR_PREFIX uint_8    gTimeString[20]; //时间"2019-01-01 00:00:21/0"

//RF模块相关全局变量
G_VAR_PREFIX uint_8 gX;
G_VAR_PREFIX uint_8 gcPCBuf[64];        //PC机发送来的数据缓冲区
G_VAR_PREFIX uint_8 gcPCLen;            //PC机发送来的数据长度
G_VAR_PREFIX uint_8 gcRFSendBuf[64];    //RF模块接收数据缓存区
G_VAR_PREFIX uint_8 gcRFSendLen;        //RF模块接收数据长度
G_VAR_PREFIX uint_8 gcRFRecvBuf[64];    //RF模块发送数据缓存区
G_VAR_PREFIX uint_8 gcRFRecvLen;        //RF模块发送数据长度
G_VAR_PREFIX uint_8 gcRFHdaddr;         //RF模块硬件地址
G_VAR_PREFIX uint_8 gcRFNodeaddr;       //RF节点地址
G_VAR_PREFIX uint_8 gcRFFlag[10];       //RF模块操作标志
G_VAR_PREFIX uint_8 gcRFHistory;        //RF模块发送数据记录

//----------------------------------------------------------------------

#endif                  //防止重复定义（结尾）


/*
 知识要素：
 注1：全局使用的宏常数，使用全大写
 注2：全局变量命名一律以g开头，尽可能保证全工程内唯一性，并且一定要注明
      其含义，（声明时不准赋值）
 注3：全局变量一处声明多处使用处理方法代码段是为了解决全局变量重复声明
 的问题，宏GLOBLE_VAR仅在main.c中声明，所以只有在main.c中包含
 本头文件时才会声明全局变量，在其他文件中包含本文件时，编译时，就会自动加
 上前缀extern，表明是main函数中声明的全局变量，该文件中直接使用。
 */
