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

📄 dtm.h

📁 AT91fr40162的FLASH读写程序
💻 H
📖 第 1 页 / 共 2 页
字号:
// 签退类型
#define COACHLOGOUT        1
#define DRIVERLOGOUT       2
#define TMPLOGOUT          3

// 定义卡类型
#define C_ADMIN         0x01
#define C_COACH         0x02
#define C_DRIVER        0x03
#define C_OFFICER       0x04

// 训练类型
#define DAYFIELD 		0 			// 日场训, 
#define DAYROAD 		1			// 日路训, 
#define NIGHTFIELD 		2			// 夜场训, 
#define NIGHTROAD 		3			// 夜路训
#define UNCERTAINED		4			// 训练类型未确定
#define MDCBT			1
#define MCDTI			2

#define MILESUM            0
#define MILECUR            1
#define TIMESUM            2
#define TIMECUR            3

// CPLD
// 0
#define CPLD_LCD_D3			8
#define CPLD_LCD_D2			4
#define CPLD_LCD_D1			2
#define CPLD_LCD_D0			1
// 2
#define CPLD_LCD_D7			8
#define CPLD_LCD_D6			4
#define CPLD_LCD_D5			2
#define CPLD_LCD_D4			1
// 4
#define CPLD_LCD_E       	8
#define CPLD_LCD_DS			4
#define CPLD_LCD_CS2     	2
#define CPLD_LCD_CS1     	1
#define CPLD_LED_G       	2
#define CPLD_LED_R       	1
// 6
#define CPLD_LCD_BL      	1
#define CPLD_IC_PWREN    	2
#define CPLD_BEEP 			8
// 8
#define CPLD_IC_DATA		1
#define CPLD_IC_CLK			2
#define CPLD_IC_RST			4
// A
#define CPLD_IC_CLK_SELECT	1				// = 0(CLK3579)  1(CPU) to IC_CLK
#define CPLD_IC_DATA_DIR	2				// = 1(Write to IC_DATA)  0(三态)


// ========== Mask for Interrupt Enable Or Disable   ========== 
#define IRQ2_MASK				(1<<18)
#define IRQ1_MASK				(1<<17)
#define IRQ0_MASK				(1<<16)
#define PIOIRQ_MASK				(1<<8)
#define WDIRQ_MASK				(1<<7)
#define TC2IRQ_MASK				(1<<6)
#define TC1IRQ_MASK				(1<<5)
#define TC0IRQ_MASK				(1<<4)
#define US1IRQ_MASK				(1<<3)
#define US0IRQ_MASK				(1<<2)
#define SWIRQ_MASK				(1<<1)
#define FIQ_MASK				(1<<0)

// ========== Mask for Clock Enable Or Disable   ========== 
#define PS_PIO_MASK				(1<<8)
#define PS_TC2_MASK				(1<<6)
#define PS_TC1_MASK				(1<<5)
#define PS_TC0_MASK				(1<<4)
#define PS_US1_MASK				(1<<3)
#define PS_US0_MASK				(1<<2)


// Peripheral Interface
// ========== Register definition for Power Saving   ========== 
#define	WD_BASE			0xFFFF8000
#define	MY_WD_OMR		(VPint(WD_BASE))			// Over Mode Register
#define	MY_WD_CRM		(VPint(WD_BASE+0x04))		// Clock Mode Register
#define	MY_WD_CR		(VPint(WD_BASE+0x08))		// Watch Dog Control Register
#define	MY_WD_SR		(VPint(WD_BASE+0x0C))		// Watch Dog Status Register

// Watch Dog Interface
// ========== Watch Dog Interface    ========== 
#define	PS_BASE			0xFFFF4000
#define	MY_PS_CR		(VPint(PS_BASE))			// Control Register
#define	MY_PS_PCER		(VPint(PS_BASE+0x04))		// Peripheral Clock Enable Register
#define	MY_PS_PCDR		(VPint(PS_BASE+0x08))		// Peripheral Clock Disable Register
#define	MY_PS_PCSR		(VPint(PS_BASE+0x0C))		// Peripheral Clock Status Register

// Parallel IO Interface
#define	PIO_BASE		0xFFFF0000
#define	MY_PIO_PER		(VPint(PIO_BASE))				// PIO Enable Register
#define	MY_PIO_PDR		(VPint(PIO_BASE+0x04))		// PIO Disable Register
#define	MY_PIO_PSR		(VPint(PIO_BASE+0x08))		// PIO Status Register
#define	MY_PIO_OER		(VPint(PIO_BASE+0x10))		// PIO Output Enable Register
#define	MY_PIO_ODR		(VPint(PIO_BASE+0x14))		// PIO Output Disable Register
#define	MY_PIO_OSR		(VPint(PIO_BASE+0x18))		// PIO Output Status Register
#define	MY_PIO_SODR		(VPint(PIO_BASE+0x30))		// PIO Set Output Data Register
#define	MY_PIO_CODR		(VPint(PIO_BASE+0x34))		// PIO Clear Output Data Register
#define	MY_PIO_ODSR		(VPint(PIO_BASE+0x38))		// PIO Output Data StatusRegister
#define	MY_PIO_PDSR		(VPint(PIO_BASE+0x3C))		// PIO Pin Data Status Register

// ========== Register definition for TC0 peripheral ========== 
#define MY_TC0_IDR   	(VPint(0xFFFE0028)) // (TC0) Interrupt Disable Register
#define MY_TC0_SR    	(VPint(0xFFFE0020)) // (TC0) Status Register
#define MY_TC0_RB    	(VPint(0xFFFE0018)) // (TC0) Register B
#define MY_TC0_CV    	(VPint(0xFFFE0010)) // (TC0) Counter Value
#define MY_TC0_CCR   	(VPint(0xFFFE0000)) // (TC0) Channel Control Register
#define MY_TC0_IMR   	(VPint(0xFFFE002C)) // (TC0) Interrupt Mask Register
#define MY_TC0_IER   	(VPint(0xFFFE0024)) // (TC0) Interrupt Enable Register
#define MY_TC0_RC    	(VPint(0xFFFE001C)) // (TC0) Register C
#define MY_TC0_RA    	(VPint(0xFFFE0014)) // (TC0) Register A
#define MY_TC0_CMR   	(VPint(0xFFFE0004)) // (TC0) Channel Mode Register

// ========== Register definition for TC1 peripheral ========== 
#define MY_TC1_IDR   	(VPint(0xFFFE0068)) // (TC1) Interrupt Disable Register
#define MY_TC1_SR    	(VPint(0xFFFE0060)) // (TC1) Status Register
#define MY_TC1_RB    	(VPint(0xFFFE0058)) // (TC1) Register B
#define MY_TC1_CV    	(VPint(0xFFFE0050)) // (TC1) Counter Value
#define MY_TC1_CCR   	(VPint(0xFFFE0040)) // (TC1) Channel Control Register
#define MY_TC1_IMR   	(VPint(0xFFFE006C)) // (TC1) Interrupt Mask Register
#define MY_TC1_IER   	(VPint(0xFFFE0064)) // (TC1) Interrupt Enable Register
#define MY_TC1_RC    	(VPint(0xFFFE005C)) // (TC1) Register C
#define MY_TC1_RA    	(VPint(0xFFFE0054)) // (TC1) Register A
#define MY_TC1_CMR   	(VPint(0xFFFE0044)) // (TC1) Channel Mode Register

// ========== Register definition for TC2 peripheral ========== 
#define MY_TC2_IDR   	(VPint(0xFFFE00A8)) // (TC2) Interrupt Disable Register
#define MY_TC2_SR    	(VPint(0xFFFE00A0)) // (TC2) Status Register
#define MY_TC2_RB    	(VPint(0xFFFE0098)) // (TC2) Register B
#define MY_TC2_CV    	(VPint(0xFFFE0090)) // (TC2) Counter Value
#define MY_TC2_CCR   	(VPint(0xFFFE0080)) // (TC2) Channel Control Register
#define MY_TC2_IMR   	(VPint(0xFFFE00AC)) // (TC2) Interrupt Mask Register
#define MY_TC2_IER   	(VPint(0xFFFE00A4)) // (TC2) Interrupt Enable Register
#define MY_TC2_RC    	(VPint(0xFFFE009C)) // (TC2) Register C
#define MY_TC2_RA    	(VPint(0xFFFE0094)) // (TC2) Register A
#define MY_TC2_CMR   	(VPint(0xFFFE0084)) // (TC2) Channel Mode Register

// 程序中使用到的结构类型
struct StruDCB {
   _BYTE cFlag;                                 // 使用标记,0=空闲,1=使用
   _DWORD dwCardID;                             // 卡号
   _BYTE cpName[128];                           // 字模
   _WORD wBuyTime;								// 买钟总时间								
   _WORD wBuyDayRoadTime;						// 买钟日路训时间
   _WORD wBuyDayFieldTime;						// 买钟日场训时间
   _WORD wBuyNightRoadTime;						// 买钟夜路训时间
   _WORD wBuyNightFieldTime;					// 买钟夜场训时间
   _BYTE cYear;                           		// 签到年份
   _BYTE cMonth;                           		// 签到月份
   _BYTE cDay;                                  // 签到日
   _BYTE cHour;                                 // 签到小时
   _BYTE cMinter;                               // 签到分钟
   _WORD wDayRoadValidTime;                     // 日路训有效时间
   _DWORD dwDayRoadValidMile;                   // 日路训有效里程
   _WORD wNightRoadValidTime;                   // 夜路训有效时间
   _DWORD dwNightRoadValidMile;                 // 夜路训有效里程
   _WORD wDayFieldValidTime;                    // 日场训有效时间
   _DWORD dwDayFieldValidMile;                  // 日场训有效里程
   _WORD wNightFieldValidTime;                  // 夜场训有效时间
   _DWORD dwNightFieldValidMile;                // 夜场训有效里程
   _WORD wDayRoadCurTime;                       // 日路训当前时间
   _DWORD dwDayRoadCurMile;                    	// 日路训当前里程
   _WORD wNightRoadCurTime;                   	// 夜路训当前时间
   _DWORD dwNightRoadCurMile;                  	// 夜路训当前里程
   _WORD wDayFieldCurTime;                    	// 日场训当前时间
   _DWORD dwDayFieldCurMile;                   	// 日场训当前里程
   _WORD wNightFieldCurTime;                  	// 夜场训当前时间
   _DWORD dwNightFieldCurMile;                 	// 夜场训当前里程
   _BYTE cCycleSecond;							// 未区分训练类型的时间(秒)
   _WORD wCyclePluse;                        	// 未区分训练类型的脉冲数
   _BYTE cCycleStopTime;                        // 在未区分训练类型时间内的停止次数
   _BYTE cCycleMaxRunTime;                      // 在未区分训练类型时间内连续运行的最大时间
   _WORD wCycleMaxRunPluse;                     // 在未区分训练类型时间内连续运行的最大脉冲数
   _BYTE cTrainType;							// 训练类型
   _BYTE cFingerScore1;                         // 指纹模板1,评分
   _BYTE cFingerScore2;                         // 指纹模板2,评分
   _WORD wFingerLength1;                        // 指纹模板1,长度
   _WORD wFingerLength2;                        // 指纹模板2,长度
   _BYTE cCrc;									// 上述所有信息的校验和
};

struct StruSPB {
   _WORD wKParm;								// K系数
   _BYTE cVerifyCycle;							// 验证指纹的时间周期
   _BYTE cSpeedLimit;							// 速度上限
   _BYTE cSpeedLine;							// 区分场地和道路训练的临界值
   _BYTE cTimeCycle;							// 区分训练类型的时间周期
   _BYTE cpDayNightLine[12];					// 区分日训和夜训的时间临界值
   _BYTE cCrc;									// 校验
};

struct StruKEYAREA {
   _BYTE cpEncryptKey[32];						// 加密密钥
   _BYTE cpDecryptKey[32];						// 解密密钥
   _BYTE cCrc;									// 校验
};

struct StruCDTI {
   _BYTE cSeq;									// DCBT表的序号
   _WORD wDayRoadValidTime;                     // 日路训有效时间
   _DWORD dwDayRoadValidMile;                   // 日路训有效里程
   _WORD wNightRoadValidTime;                   // 夜路训有效时间
   _DWORD dwNightRoadValidMile;                 // 夜路训有效里程
   _WORD wDayFieldValidTime;                    // 日场训有效时间
   _DWORD dwDayFieldValidMile;                  // 日场训有效里程
   _WORD wNightFieldValidTime;                  // 夜场训有效时间
   _DWORD dwNightFieldValidMile;                // 夜场训有效里程
   _WORD wDayRoadCurTime;                       // 日路训当前时间
   _DWORD dwDayRoadCurMile;                    	// 日路训当前里程
   _WORD wNightRoadCurTime;                   	// 夜路训当前时间
   _DWORD dwNightRoadCurMile;                  	// 夜路训当前里程
   _WORD wDayFieldCurTime;                    	// 日场训当前时间
   _DWORD dwDayFieldCurMile;                   	// 日场训当前里程
   _WORD wNightFieldCurTime;                  	// 夜场训当前时间
   _DWORD dwNightFieldCurMile;                 	// 夜场训当前里程
   _BYTE cCycleSecond;							// 未区分训练类型的时间(秒)
   _WORD wCyclePluse;                        	// 未区分训练类型的脉冲数
   _BYTE cCycleStopTime;                        // 在未区分训练类型时间内的停止次数
   _BYTE cCycleMaxRunTime;                      // 在未区分训练类型时间内连续运行的最大时间
   _WORD wCycleMaxRunPluse;                     // 在未区分训练类型时间内连续运行的最大脉冲数
   _BYTE cTrainType;							// 前面若干次的训练类型
   _BYTE cUpdateCount;							// 更新计数
   _BYTE cCrc;									// 校验
};

struct StruCSI {
   _BYTE cStatus;								// 手持机的当前状态
   _BYTE cCurDCB;                     			// 当前DCB序号,仅在训练状态下有效
   _BYTE cReserve;								// 保留数据
   _BYTE cCrc;									// 校验和
};

struct FontIdx {
   _BYTE CharCode;                              // 字符编码
   _BYTE CharType;                              // 字符类型
   _WORD Offset;                                // 字符在字模数组中的偏移
};

struct StruBIEFBASEINFO {
	_DWORD dwCardID;							// 持卡人编号
	_BYTE cpName[128];							// 持卡人姓名
	_BYTE cCardType;							// 卡类型
	_WORD wMaxItem;								// 日志总条数
	_BYTE cFingerScore1;						// 指纹一评分
	_WORD wFingerLength1;						// 指纹一长度
	_BYTE cFingerScore2;						// 指纹二评分
	_WORD wFingerLength2;						// 指纹二长度
	_BYTE cpFingerMB1[LENOFMB];					// 指纹模板一
	_BYTE cpFingerMB2[LENOFMB];					// 指纹模板二
	_BYTE cCrc;									// 校验	 
};
typedef struct StruBIEFBASEINFO SBIEF_1;

struct StruBIEFTRAININFO {
	_DWORD dwDayFieldTotalTime;					// 日道训累加时间
	_DWORD dwDayFieldTotalMile;					// 日道训累加里程
	_DWORD dwDayRoadTotalTime;					// 日场训累加时间
	_DWORD dwDayRoadTotalMile;					// 日场训累加里程
	_DWORD dwNightFieldTotalTime;				// 夜道训累加时间
	_DWORD dwNightFieldTotalMile;				// 夜道训累加里程
	_DWORD dwNightRoadTotalTime;				// 夜场训累加时间
	_DWORD dwNightRoadTotalMile;				// 夜场训累加里程
	_WORD wCurrentItem;							// 当前条数
	_BYTE cCrc;									// 校验
};
typedef struct StruBIEFTRAININFO SBIEF_2;

struct StruBIEFTIMEINFO {
   	_WORD wBuyTime;								// 买钟总时间								
   	_WORD wBuyDayFieldTime;						// 买钟日场训时间
   	_WORD wBuyDayRoadTime;						// 买钟日路训时间
   	_WORD wBuyNightFieldTime;					// 买钟夜场训时间
   	_WORD wBuyNightRoadTime;					// 买钟夜路训时间
	_BYTE cCrc;									// 校验
};
typedef struct StruBIEFTIMEINFO SBIEF_3;

struct StruCLOCK {
	_BYTE cYear;
	_BYTE cMonth;
	_BYTE cDay;
	_BYTE cHour;
	_BYTE cMinter;
	_BYTE cSecond;
	_BYTE cWeek;
};

struct StruLOGPOOL {
   _BYTE cpLogBuf[LENOFCOACHLOG];
   _BYTE cFlag;
};

struct StruCPLD {
   _BYTE cLCDDataL;
   _BYTE cLCDDataH;
   _BYTE cLCDControl;
   _BYTE cCPLDAdd6;
   _BYTE cCPLDAdd8;
   _BYTE cCPLDAddA;
};   

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -