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

📄 ini.h

📁 UC/OS II 移植代码
💻 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 + -