zoukankan      html  css  js  c++  java
  • 【ARM】2440裸机系列-gpio按键控制

    功能

       通过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
                }
         }
    }
  • 相关阅读:
    事件委托
    a标签深入研究
    windows查看端口号
    什么是WCM
    map key循环
    用Myeclipse打war包
    myeclipse 8.510.0 安装 svn 方法
    SVN使用&CVS使用
    MyEclipse 字体大小 字体颜色
    什么是Quickr
  • 原文地址:https://www.cnblogs.com/lcw/p/3159412.html
Copyright © 2011-2022 走看看