免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1418 | 回复: 0
打印 上一主题 下一主题

Mini2440按键驱动(基于裸机) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-29 14:38 |只看该作者 |倒序浏览
以前学习的是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必须
#define GPXXOUT(GPXCON,x) (GPXCON = ((GPXCON &  ~(0x3  (2 * x))) | (0x1  (2 * x))))
/******************************************************************************
  设置GPIO控制端口GPXCON的x位为输入,GPXCON必须为GPBCON~GPJCON,
  x必须
#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
        下载:
下载
       


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/73528/showart_1883647.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP