📄 hwconfig.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 + -