📄 ini.h
字号:
/****************************************Copyright (c)**************************************************
** xxxxxxxxxxxxxxxxx公司
** 硬件开发部
**
**
** http://www.xxxxxx.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: main.c
**创 建 人: 赖建
**最后修改日期: --------
**描 述: 常规初始化的一些定义
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 赖建
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define RC
#define BAUD_RATE 9600
#define IIC_RATE 400000
/* LED配置 */
#define LED3 17 // P1.21 控制LED0
#define LED2 28 // P0.22 控制LED1
#define LED1 29 // P0.29 控制LED2
#define LED0 30 // P0.30 控制LED3
#define LED0_ON() IO0CLR = (1<<LED0)
#define LED0_OFF() IO0SET = (1<<LED0)
#define LED1_ON() IO0CLR = (1<<LED1)
#define LED1_OFF() IO0SET = (1<<LED1)
#define LED2_ON() IO0CLR = (1<<LED2)
#define LED2_OFF() IO0SET = (1<<LED2)
#define LED3_ON() IO1CLR = (1<<LED3)
#define LED3_OFF() IO1SET = (1<<LED3)
#define LED_RFID_ON() LED0_ON()
#define LED_RFID_OFF() LED0_OFF()
#define LED_CAN0_ON() LED1_ON()
#define LED_CAN0_OFF() LED1_OFF()
#define LED_CANERR_ON()
#define LED_ERR_ON() LED2_ON()
#define LED_ERR_OFF() LED2_OFF()
#define LED_WORK_ON() LED3_ON()
#define LED_WORK_OFF() LED3_OFF()
#define CAN_ERR_ON() LED_ERR_ON()
#define CAN_ERR_OFF() LED_ERR_OFF()
#define LED_INI() \
PINSEL1 &= ~((3<<(LED0-16)*2)|(3<<(LED1-16)*2)|(3<<(LED2-16)*2));\
LED_RFID_OFF();LED_CAN0_OFF();LED_ERR_OFF();LED_WORK_ON(); \
IO0DIR |= (1<<LED0)|(1<<LED1)|(1<<LED2); \
IO1DIR |= (1<<LED3)
/* 看门狗配置 */
#define WDOG_PORT 18 // P0.18控制外部看门狗
#define WATCHDOG_SOFT() OS_ENTER_CRITICAL(),WDFEED = 0xAA,WDFEED = 0x55,OS_EXIT_CRITICAL()
#define WATCHDOG_HARDWARE() OS_ENTER_CRITICAL();\
if((IO0SET&(1<<WDOG_PORT))==0) IO0SET = 1<<WDOG_PORT;\
else IO0CLR = 1<<WDOG_PORT;\
OS_EXIT_CRITICAL()
#define WDOG_CONFIG() PINSEL1&=~(3<<(WDOG_PORT-16)*2),IO0DIR |= (1<<WDOG_PORT)
/* RS485配置 */
#define RS485A_RW_PORT 16 // P1.16
#define RS485B_RW_PORT 10 // P0.10
#define RS485A_R() IO1CLR = (1<<RS485A_RW_PORT)
#define RS485A_W() IO1SET = (1<<RS485A_RW_PORT)
#define RS485B_R() IO0CLR = (1<<RS485B_RW_PORT)
#define RS485B_W() IO0SET = (1<<RS485B_RW_PORT)
#define RS485A_INI() RS485A_R(); \
IO1DIR |= (1<<RS485A_RW_PORT)
#define RS485B_INI() PINSEL0 &= ~(3<<(RS485B_RW_PORT*2)); \
RS485B_R(); \
IO0DIR |= (1<<RS485B_RW_PORT)
#define LOCAL_TAG 0
#define RS485A 2
#define RS485B 4
/* I2C储存系统参数地址分配 */
#define IIC_PASSWORD_ADR 0
#define IIC_PARA_ADR IIC_PASSWORD_ADR+32
#define IIC_SNMP_ADR IIC_PARA_ADR+64
#define IIC_TEST_ADR 0xFF
#define TaskSys0_PRI 4
#define TaskCan_PRI 13
#define TaskRS485_PRI 11
#define TaskRfid_PRI 12
#define TaskCanMoni_PRI 20
#define TaskSys0StkLen 128
#define TaskCanStkLen 256
#define TaskRfidStkLen 128
#define TaskCanMoniStkLen 128
#define TaskRS485StkLen 256
#define MAX_PAYLOAD 150 // PC或rs485下发的payload最大字节数
#define MAX_TAG 50 // 轮询最大TAG个数
#ifdef RC
#define RFID_BUF_LEN 800 // 本地标签缓冲区TAG个数
#define STATE_INFO_LEN 1 // 状态信息长度
#else
#define RFID_BUF_LEN 254 // 本地标签缓冲区TAG个数
#define STATE_INFO_LEN 2 // 状态信息长度
#endif
/* 串口转发PC */
#define PC_DispChar(str) UART0_SendStr(str)
//******************************************************
#ifdef YUNTIANHUA
__packed typedef struct { // TAG项数据内容 云天化(8)
uint32 ID;
uint8 dat;
uint8 status;
uint16 time;
} TagData;
#else
__packed typedef struct { // TAG项数据内容 煤安(5)
uint16 ID;
uint8 status;
uint16 time;
} TagData;
#endif
__packed typedef struct _history // 操作历史记录数据结构
{
uint32 HeadAdr; // 内部储存区头地址
uint32 TailAdr; // 内部储存区为地址
uint16 TotalCnt; // 总记录数
uint8 IICHeadTag; // 外部储存区头
uint8 IICTailTag; // 外部储存区尾
uint8 HisFlag; // 有无历史记录
} HIS_PARA;
enum CAN_BAUD {
BAUD_BPS5K,
BAUD_BPS10K,
BAUD_BPS20K,
BAUD_BPS50K,
BAUD_BPS100K,
BAUD_BPS500K,
BAUD_BPS1000K
};
/********** 读头类型定义 *************/
#ifdef CAN_RS232
#define READER_TYPE 0x10
#endif
#ifdef CANBRIDGE
#define READER_TYPE 0x11
#endif
#ifdef RC
#define READER_TYPE 0x12
#endif
#ifdef YUNTIANHUA
#define READER_TYPE 0x20
#endif
__packed typedef struct __parameter0 // 系统参数
{
uint16 ReaderID; // ID
uint8 RxFreq; // 接收频率
uint8 TxFreq; // 发送频率
uint8 TagEn; // 使能天线
uint16 ErrCnt; // 错误计数器
HIS_PARA HisData; // 历史记录
#ifdef YUNTIANHUA // 云天化
#define TAG_MAX_ID 0xFFFFFFFE
#define TAG_MIN_ID 0x00000001
uint32 TagMinID; // TAG范围 小值
uint32 TagMaxID; // TAG范围 大值
#define DI_HENG 1
#define OTHER 2
uint8 Type; // 读头类型[地横铁轨]
#define SOUND_MAX 4
uint8 SoundCnt; // 语音播报次数
uint8 IpAdr[4]; // IP地址
uint8 GetWayAdr[4];// 网关
uint8 NetMaskAdr[4];
uint8 MacAdr[6]; // 网卡地址
#else // RC和CAN桥
#define TAG_MAX_ID 0xFFFE
#define TAG_MIN_ID 0x0001
uint16 TagMinID; // TAG范围 小值
uint16 TagMaxID; // TAG范围 大值
#define SWITCH_ON 1
#define SWITCH_OFF 2
uint8 Switch; // 拨码开关使能
uint8 CAN1Baud; // CAN1口波特率
uint8 CAN2Baud; // CAN2口波特率
#ifdef CAN_RS232
#define UART_BAUD_115200 0
#define UART_BAUD_9600 1
uint8 UART0Baud;// uart0波特率
#endif
#endif
#define HOSTNAME_LEN 16
char HostName[HOSTNAME_LEN+1];
} parameter;
typedef struct _protocol // 解析命令格式数据结构
{
uint8 *pt; // 净荷指针 tmp
uint16 dstID; // 目的ID
uint16 srcID; // 源ID
uint16 ChksumAdd; // 本地计算检验和
uint16 ChksumRevc; // 接收校验和
uint8 Flag0xAA;
uint8 err; // 错误 检验和
uint8 State; // 状态
uint8 StateLen; // 每个状态字节长度
uint8 PayloadLen; // 净荷长度
uint8 Insert; // 插零操作
int8 cmd; // 命令
#ifdef CANBRIDGE
uint8 SendFlag; // 发送标志
#endif
#define PTL_MODE_ROLL 0
#define PTL_MODE_RS485 1
#define PTL_MODE_UART0 1
uint8 mode; // 轮询 485 串口
uint8 Payload[MAX_PAYLOAD];
} PROTOCOL;
typedef struct // TAG操作数据结构
{
TagData *HeadDef; // 本地标签混冲区默认头
TagData *TailDef; // 本地标签混冲区默认尾
TagData *HeadP; // 本地标签混冲区头
TagData *TailP; // 本地标签混冲区尾
TagData *DispP; // 显示TAGID缓冲区地址
uint16 TagCnt; // 本地TAG个数
} TagOpt;
typedef struct // 网桥子网结构
{
uint8 ID;
uint8 state;
} CHILD_NET;
typedef struct // TAG操作数据结构
{
OS_EVENT *sem; // 互斥信号量
uint8 *SendBufP;// 发送缓冲区
TagOpt *OptP; // TAG操作指针
PROTOCOL *PtlP; // 轮询命令协议区指针
parameter *para; // 本机系统参数指针
#ifdef CANBRIDGE
CHILD_NET ChildNet[16];
uint8 ChildNetCnt;
#endif
#define SAVE_HIS_TIMEOUT 1*60*5
uint32 SaveHisTmr;
uint16 Time; // 本地轮询的时间
uint8 ReaderState;
} TAG_PRO;
//*****************************************************
#define swap32(n) ((((n)&0xff)<<24)|(((n)&0xff00)<<8)|(((n)&0xff0000)>>8)|(((n)&0xff000000)>>24))
#define swap16(n) ((((n)&0xff)<<8)|(((n)&0xff00)>> 8))
#ifdef YUNTIANHUA
#define ID_SWAP(ID) swap32(ID) // 4个字节
#else
#define ID_SWAP(ID) swap16(ID) // 2个字节
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -