Chinaunix首页 | 论坛 | 博客
  • 博客访问: 950771
  • 博文数量: 113
  • 博客积分: 7235
  • 博客等级: 少将
  • 技术积分: 2101
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 11:24
文章分类

全部博文(113)

文章存档

2013年(7)

2012年(5)

2011年(6)

2010年(8)

2009年(15)

2008年(72)

分类: LINUX

2009-03-29 14:38:10

以前学习的是LPC2103,使用的是周立功的工程模板,现在自己买了一块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)

/******************************************************************************
 设置GPIO控制端口GPXCON的x位为输出,GPXCON必须为GPBCON~GPJCON,
 x必须<=16
 ******************************************************************************/

#define GPXXOUT(GPXCON,x) (GPXCON = ((GPXCON & ~(0x3 << (2 * x))) | (0x1 << (2 * x))))
/******************************************************************************
  设置GPIO控制端口GPXCON的x位为输入,GPXCON必须为GPBCON~GPJCON,
  x必须<=16
 ******************************************************************************/

#define GPXXIN(GPXCON,x) (GPXCON = ((GPXCON & ~(0x3 << (2 * x)))))
/********************************************************************************
 设置GPIO端口GPXDAT的x位为高电平,GPXCON必须为GPBCON~GPJCON,
 x视不同的BANK拥有的I/O口的个数而定
 ********************************************************************************/

#define GPXXSET(GPXDAT, x) GPXDAT = GPXDAT | (1 << x)
/********************************************************************************
 设置GPIO端口GPXDAT的x位为低电平,GPXCON必须为GPBCON~GPJCON,
 x视不同的BANK拥有的I/O口的个数而定
 ********************************************************************************/

#define GPXXCLR(GPXDAT, x) GPXDAT = GPXDAT & ~(1 << x)
/*******************************************************************************
 拉高GPXUP端口的x位,GPXCON必须为GPBCON~GPJCON,
 x视不同的BANK拥有的I/O口的个数而定
 *******************************************************************************/

#define GPXUPSET(GPXUP, x) GPXUP = GPXUP | (1 << x)
/*******************************************************************************
 拉低GPXUP端口的x位,GPXCON必须为GPBCON~GPJCON,
 x视不同的BANK拥有的I/O口的个数而定
 *******************************************************************************/

#define GPXUPCLR(GPXUP, x) GPXUP = GPXUP & ~(1 << x)

当然,这只是一个一个头文件,下面是一个使用ADS1.2建立的完整的工程,功能是按键亮灯,包括Init.S(汇编代码,算是个小小的引导吧),io.h(就是上面的代码),main.c(按键亮灯)。
文件:key.rar
大小:9KB
下载:下载
阅读(2550) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-26 13:49:19

校友,支持

niutao.linux2009-06-22 10:57:33

欢迎一起学习,我的邮箱是niutao0602@gmail.com

chinaunix网友2009-06-20 19:54:05

楼主可否留个联系方式, 我有些问题想在线请教一下你 谢谢

chinaunix网友2009-04-01 20:13:45

下载了。谢谢,支持