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
                }
         }
    }
  • 相关阅读:
    Babel 7.x 和 Babel 8.x的区别
    JavaScript——Set 的用法
    DFS 和 BFS
    JavaScript——event事件详解
    Day17-18前端学习之路——Javascript事件
    Day17-18前端学习之路——常用语句资料库
    Day5前端学习之路——盒模型和浮动
    Day7前端学习之路——多栏布局
    如何在GitHub预览html
    新人上路请教一个输入字符的问题
  • 原文地址:https://www.cnblogs.com/lcw/p/3159412.html
Copyright © 2011-2022 走看看