功能

通过GPIO,实现按键1点亮LED1,按键2点亮LED2……

说明

1)因为2440的按键只涉及行,所以在扫描按键时比2410简单了很多

2)在进行移位操作之前,必须进行数据寄存器的初始化,否则会出错(硬件特性)

源码

/*****************************************************************************
*****函数名:main()
*****功 能:通过GPIO,实现按键1点亮LED1,按键2点亮LED2
*****说 明:
*****************************************************************************/
#include "2440addr.h"
#define clrbit(var, bit) ((var) &= ~(1 << (bit))) //把某一位清0
int main (void)
{
rGPGCON &= (~((3<<22)|(3<<14)|(3<<12)|(3<<10)|(3<<6)|(3<<0))); //设置按键为输入
rGPGUP = 0x0; //GPG上拉使能
rGPBCON &= (~((3<<16)|(3<<14)|(3<<12)|(3<<10)|(3<<0))); //LED1~4输出位清零
rGPBCON |= ((1<<16)|(1<<14)|(1<<12)|(1<<10)|(0<<0)); //设置LED1~4为输出
rGPBUP =0x3ff; //11 1111 1111,GPB上拉禁止
rGPBDAT=0x3ff; //在进行移位操作之前必须进行数据寄存器的初始化
while(1)
{
if(0==(rGPGDAT & (1<<0))) //GPG0
{
clrbit(rGPBDAT, 5); //LED1
}
else if(0==(rGPGDAT & (1<<3))) //GPG3
{
clrbit(rGPBDAT, 6); //LED2
}
else if(0==(rGPGDAT & (1<<5))) //GPG5
{
clrbit(rGPBDAT, 7); //LED3
}
else if(0==(rGPGDAT & (1<<6))) //GPG6
{
clrbit(rGPBDAT, 8); //LED4
}
}
}

【ARM】2440裸机系列-gpio按键控制的更多相关文章

  1. 【ARM】2410裸机系列-按键查询式控制led

    开发环境   硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11    KSCAN1 -> GPG6 ...

  2. 【ARM】2440裸机系列-RTC数字时钟

    功能 裸机程序,实现LCD显示数字时钟 主要代码   1)背景绘制 void Brush_ U32 c) { int x,y ; for ( y = 0 ; y < LCD_HEIGHT ; y ...

  3. 【ARM】2440裸机系列-图片显示

    功能 LCD显示字汉字,字符和图片 说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中 主要代码   1)绘制背景 void Brush_ U32 c) { int x,y ...

  4. ARM Cortex M3系列GPIO口介绍(工作方式探讨)

    一.Cortex M3的GPIO口特性    在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图     从图中可以看出 ...

  5. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  6. 基于arm开发板四个按键控制四个灯亮

    基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯 对于用汇编来编程的话不难,重点在于数据手册,电路图,管脚的看懂 直接上代码 .globl _start_start: ldr ...

  7. 一、2440裸机点亮led

    从代码開始(先写一个像普通单片机一样的代码): /********led.c************************/ #define GPFCON  (*(volatile unsigned ...

  8. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二

    /** ****************************************************************************** * @author    暴走的小 ...

  9. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之一

    /** ****************************************************************************** * @author    暴走的小 ...

随机推荐

  1. java 获取计算机名称, ip, mac地址

    写在前面 通常所说查询本机mac地址是以以太网为准的, 也就是网线那个口..这种描述略捞. 但是通过java的getHostAddress获取ip以及getHardwareAddress()方法获取m ...

  2. iOS绘图UIBezierPath 和 Core Graphics框架

    前言 iOS系统本身提供了两套绘图的框架,即UIBezierPath 和 Core Graphics.而前者所属UIKit,其实是对Core Graphics框架关于path的进一步封装,所以使用起来 ...

  3. Webdriver设置Firefox自动下载

    看到很多人在firefox上操作下载窗口用autoit,太麻烦了,提供一种用profile来解决的办法: FirefoxProfile profile = new FirefoxProfile(); ...

  4. Redis学习之路(002)- Ubuntu下redis开放端口

    Redis在ubuntu安装后默认是只有本地访问,需要别的ip访问我们需要修改redis的配置文件 1. dpkg -L redis-server 这命令我们可以看到redis的安装的文件在那些目录 ...

  5. OAuth的机制原理讲解及开发流程(转)

    1.OAuth的简述 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是 ...

  6. magento 为用户注册增加一个字段(转)

    步骤 I. 加一个occupation/title字段到用户注册页,差不多在register.html的54行,在email下方加一个Occupation显示代码 代码: <li>< ...

  7. FluentScheduler

    The job configuration is handled in a Registry class. A job is either an Action or a class that inhe ...

  8. 【Linux】字符转换命令join

    join 看字面上的意义 (加入/参加) 就可以知道,他是在处理两个文件之间的数据,而且,主要是在处理『两个文件当中,有 "相同数据" 的那一行,才将他加在一起』的意思.我们利用底 ...

  9. 【转】C# 的 IDisposable 接口

    C# 的 IDisposable 接口 我在微软的团队快被微软 C# 里面的各种 IDisposable 对象给折腾疯了…… 故事比较长,先来科普一下.如果你没有用过 C#,IDisposable 是 ...

  10. Bitter Sweet Symphony

    当我写下这段话时,另一个我觉醒了. 时间仿佛一下子从2013年的末尾跳到了2014年了,是那么的猝不及防.1990——2014,24岁了,一瞬间,不知不觉已经走过了24个岁月了.过去,我时常会反省着, ...