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
                }
         }
    }
  • 相关阅读:
    ue4 材质表达式分类
    UE4材质特别属生记录
    tangent space与object space
    better-scroll插件 api
    better-scroll 与 Vue 结合
    git 简介
    vue 插件
    前端小程序——js+canvas 给图片添加水印
    使用Node.js给图片加水印的方法
    Vue框架 周期
  • 原文地址:https://www.cnblogs.com/lcw/p/3159412.html
Copyright © 2011-2022 走看看