- 論壇徽章:
- 0
|
以前學(xué)習(xí)的是LPC2103,使用的是周立功的工程模板,現(xiàn)在自己買了一塊mini2440,就想著從0開始,自己搞一個簡單的模板,昨天寫了一個,拿出來分享分享,希望有用,^_^。 #define GPIOBASE 0x56000000
#define GPXCON_ADDR(x) (*(volatile unsigned long *)(GPIOBASE + x))
#define GPXDAT_ADDR(x) (*(volatile unsigned long *)(GPIOBASE + x + 4))
#define GPXUP_ADDR(x) (*(volatile unsigned long *)(GPIOBASE + x + 8))
#define GPA 0x0
#define GPB 0x10
#define GPC 0x20
#define GPD 0x30
#define GPE 0x40
#define GPF 0x50
#define GPG 0x60
#define GPH 0x70
#define GPJ 0xd0
#define GPACON GPXCON_ADDR(GPA)
#define GPADAT GPXDAT_ADDR(GPA)
#define GPAXOUT(x) (GPACON & (GPXMASK & (0x0 x)))
#define GPBCON GPXCON_ADDR(GPB)
#define GPBDAT GPXDAT_ADDR(GPB)
#define GPBUP GPXUP_ADDR(GPB)
#define GPCCON GPXCON_ADDR(GPC)
#define GPCDAT GPXDAT_ADDR(GPC)
#define GPCUP GPXUP_ADDR(GPC)
#define GPDCON GPXCON_ADDR(GPD)
#define GPDDAT GPXDAT_ADDR(GPD)
#define GPDUP GPXUP_ADDR(GPD)
#define GPECON GPXCON_ADDR(GPE)
#define GPEDAT GPXDAT_ADDR(GPE)
#define GPEUP GPXUP_ADDR(GPE)
#define GPFCON GPXCON_ADDR(GPF)
#define GPFDAT GPXDAT_ADDR(GPF)
#define GPFUP GPXUP_ADDR(GPF)
#define GPGCON GPXCON_ADDR(GPG)
#define GPGDAT GPXDAT_ADDR(GPG)
#define GPGUP GPXUP_ADDR(GPG)
#define GPHCON GPXCON_ADDR(GPH)
#define GPHDAT GPXDAT_ADDR(GPH)
#define GPHUP GPXUP_ADDR(GPH)
#define GPJCON GPXCON_ADDR(GPJ)
#define GPJDAT GPXDAT_ADDR(GPJ)
#define GPJUP GPXUP_ADDR(GPJ)
/******************************************************************************
設(shè)置GPIO控制端口GPXCON的x位為輸出,GPXCON必須為GPBCON~GPJCON,
x必須
#define GPXXOUT(GPXCON,x) (GPXCON = ((GPXCON & ~(0x3 (2 * x))) | (0x1 (2 * x))))
/******************************************************************************
設(shè)置GPIO控制端口GPXCON的x位為輸入,GPXCON必須為GPBCON~GPJCON,
x必須
#define GPXXIN(GPXCON,x) (GPXCON = ((GPXCON & ~(0x3 (2 * x)))))
/********************************************************************************
設(shè)置GPIO端口GPXDAT的x位為高電平,GPXCON必須為GPBCON~GPJCON,
x視不同的BANK擁有的I/O口的個數(shù)而定
********************************************************************************/
#define GPXXSET(GPXDAT, x) GPXDAT = GPXDAT | (1 x)
/********************************************************************************
設(shè)置GPIO端口GPXDAT的x位為低電平,GPXCON必須為GPBCON~GPJCON,
x視不同的BANK擁有的I/O口的個數(shù)而定
********************************************************************************/
#define GPXXCLR(GPXDAT, x) GPXDAT = GPXDAT & ~(1 x)
/*******************************************************************************
拉高GPXUP端口的x位,GPXCON必須為GPBCON~GPJCON,
x視不同的BANK擁有的I/O口的個數(shù)而定
*******************************************************************************/
#define GPXUPSET(GPXUP, x) GPXUP = GPXUP | (1 x)
/*******************************************************************************
拉低GPXUP端口的x位,GPXCON必須為GPBCON~GPJCON,
x視不同的BANK擁有的I/O口的個數(shù)而定
*******************************************************************************/
#define GPXUPCLR(GPXUP, x) GPXUP = GPXUP & ~(1 x)
當(dāng)然,這只是一個一個頭文件,下面是一個使用ADS1.2建立的完整的工程,功能是按鍵亮燈,包括Init.S(匯編代碼,算是個小小的引導(dǎo)吧),io.h(就是上面的代碼),main.c(按鍵亮燈)。
![]()
文件:key.rar
大小:9KB
下載:
下載
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/73528/showart_1883647.html |
|