×
单片机 > 单片机程序设计 > 详情

【ARM】2440裸机系列-gpio按键控制

发布时间:2020-12-28 发布时间:
|

功能

    通过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  按键控制 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM基础知识八