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

📄 hwconfig.txt

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 TXT
字号:
		  硬件板级配置文件HWConfig.H
在该配置文件中对AT91R40800处理器的各寄存器、寄存器各位属性及其外设寄存器结构进行了定义,并对CPU及外设的输入输出端口进行了定义和配置

#include "AT91M40800.h"		AT91M40800.h是ATMEL自带的文件,该文件对AT91M40800.h的硬件寄存器进行结构化归类,并对各寄存器及寄存器个控制位进行了定义,如对有关先进中断控制器的定义。

数据类型定义:
typedef volatile unsigned int AT91_REG;	

对先进中断控制寄存器进行结构化定义:
typedef struct _AT91S_AIC {
	AT91_REG	 AIC_SMR[32]; 	// Source Mode egister
	AT91_REG	 AIC_SVR[32]; 	// Source Vector egister
	AT91_REG	 AIC_IVR; 	// IRQ Vector Register
	AT91_REG	 AIC_FVR; 	// FIQ Vector Register
	AT91_REG	 AIC_ISR; 	// Interrupt Status Register
	AT91_REG	 AIC_IPR; 	// Interrupt Pending Register
	AT91_REG	 AIC_IMR; 	// Interrupt Mask Register
	AT91_REG	 AIC_CISR; 	// Core Interrupt Status Register
	AT91_REG	 Reserved0[2]; 	// 保留
	AT91_REG	 AIC_IECR; 	// Interrupt Enable Command Register
	AT91_REG	 AIC_IDCR; 	// Interrupt Disable Command egister
	AT91_REG	 AIC_ICCR; 	// Interrupt Clear Command Register
	AT91_REG	 AIC_ISCR; 	// Interrupt Set Command Register
	AT91_REG	 AIC_EOICR; 	// End of Interrupt Command Register
	AT91_REG	 AIC_SPU; 	// Spurious Vector Register
} AT91S_AIC, *AT91PS_AIC;
		
定义中断源模式寄存器的个控制位:
// -------- AIC_SMR : (AIC Offset: 0x0) Control Register -------- 
#define AT91C_AIC_PRIOR       	((unsigned int) 0x7 <<  0) 
#define AT91C_AIC_PRIOR_LOWEST  ((unsigned int) 0x0) 
#define AT91C_AIC_PRIOR_HIGHEST ((unsigned int) 0x7) 
#define AT91C_AIC_SRCTYPE     	((unsigned int) 0x3 <<  5) 
#define AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE  ((unsigned int) 0x0 <<  5) 
#define AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED   ((unsigned int) 0x1 <<  5) 
#define AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL       ((unsigned int) 0x2 <<  5) 
#define AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE    ((unsigned int) 0x3 <<  5) 

配置AT91M40800的存储器影射I/O:
#define AT91C_AIC_EOICR ((AT91_REG *) 	0xFFFFF130)
/*****************************************************************************************/

为了便于管理我们对CPU的各I/O引脚进行了再定,以原理图上的网络标号作为作为I/O引脚号
#define KLTXD_PIN			AT91C_P24_BMS
#define VEDIO_RESET_PIN			AT91C_PIO_P23	
#define VEDIORXD_PIN			AT91C_P22_RXD1
#define VEDIOTXD_PIN			AT91C_P21_TXD1
#define	RING0_PIN			AT91C_P20_SCK1
#define RTS0_PIN			AT91C_PIO_P19
#define CTS0_PIN			AT91C_PIO_P18
#define DCD0_PIN			AT91C_PIO_P17
#define DTR0_PIN			AT91C_PIO_P16
#define GSM_TXD0_PIN			AT91C_P15_RXD0
#define GSM_RXD0_PIN			AT91C_P14_TXD0
#define DSR0_PIN			AT91C_PIO_P13
#define JICHENG_PIN			AT91C_P12_FIQ
#define HONGWAI_PIN			AT91C_P10_IRQ1
#define SU_IRQ0_PIN			AT91C_P9_IRQ0
#define WENYU_TXD_PIN			AT91C_P8_TIOB2
#define NFRB_PIN			AT91C_P7_TIOA2
#define S_MIC_B_PIN			AT91C_P6_TCLK2
#define GSM_ON_OFF_PIN			AT91C_P5_TIOB1
#define GSM_RST_PIN			AT91C_P4_TIOA1
#define GPSSAVE_PIN			AT91C_P3_TCLK1
#define SF_RST_PIN			AT91C_P2_TIOB0
#define PATH_COL_PIN			AT91C_P1_TIOA0
#define RUNFLAG_PIN			AT91C_P0_TCLK0
#define GPS_IN_PIN			AT91C_PIO_P29

配置CPLD各端口,其中输入端口(对于CPLD来讲)A的地址为(EXT_CPLD_BASE + 0x000000)
		各位与CPLD引脚的对应关系为A0->33; A1->32; A2->31; A3->42

		输入端口(对于CPLD来讲)B的地址为(EXT_CPLD_BASE + 0x001000)
		各位与CPLD引脚的对应关系为B0->36; B1->29; B2->28; B3->27

		输入端口(对于CPLD来讲)C的地址为(EXT_CPLD_BASE + 0x002000)
		各位与CPLD引脚的对应关系为C0->44; C1->37

		输出端口(对于CPLD来讲)A的地址为(EXT_CPLD_BASE + 0x004000)
		各位与CPLD引脚的对应关系为A0->33; A1->32; A2->31; A3->42

		输出端口(对于CPLD来讲)B的地址为(EXT_CPLD_BASE + 0x005000)
		各位与CPLD引脚的对应关系为B0->34

		输出端口(对于CPLD来讲)C的地址为(EXT_CPLD_BASE + 0x003000)
			     对该端口的配置地址为(EXT_CPLD_BASE + 0x006000)
		各位与CPLD引脚的对应关系为C0->40; C1->39; C2->38

对CPLD各端口基本操作的宏定义
#define SetPort_High(PORT,PIN)       *(INT8U*)PORT |= PIN	置位引脚
#define SetPort_Low(PORT,PIN)        *(INT8U*)PORT &= ~PIN	复位引脚
#define ReadFromExtPort(PORT,PIN)    (*(INT8U*)PORT & PIN)	读引脚状态

⌨️ 快捷键说明

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