GPIO接口编程

GPIO接口编程
一、S3C2410有117个I/O口,共分为A~H共8组,可以通过设置寄存器来确定某个引脚用于输入、输出还是其他特殊功能。

和I/O操作相关的寄存器:

1、GPxCON

    用于配置引脚功能;

    GPACON中每一位对应一个引脚(共23根),0——输出,1——用于地址线或地址控制,一般GPACON通常设为全1,以便访问外部存储器件;

    其余I/O组的GPCON寄存器中每两位控制一个引脚,00——输入、01——输出、10——特殊功能、11——保留;

    

2、GPxDAT

    GPxDAT用于读/写引脚,当引脚被设为输入时,读此寄存器可知相应引脚的电平状态;

                                      当引脚被设为输出时,写此寄存器相应位可令此引脚输出高电平或低电平;

3、GPxUP

    某位为1,相应引脚无内部上拉电阻;

    为0,相应引脚使用上拉电阻;

    上拉电阻的作用:当I/O引脚处于三态时,它的电平状态由上拉电阻、拉电阻确定。

二、S3C2410的寄存器地址列表如下:

GPACON                   0x5600_0000

GPADAT                    0x5600_0004

GPBCON                   0x5600_0010

GPBDAT                    0x5600_0014

GPBUP                      0x5600_0018

GPCCON                   0x5600_0020

GPCDAT                    0x5600_0024

GPCUP                     0x5600_0028

GPDCON                   0x5600_0030

GPDDAT                    0x5600_0034

GPDUP                      0x5600_0038

GPECON                   0x5600_0040

GPEDAT                    0x5600_0044

GPEUP                      0x5600_0048

GPFCON                   0x5600_0050

GPFDAT                    0x5600_0054

GPFUP                      0x5600_0058

GPGCON                   0x5600_0060

GPGDAT                    0x5600_0064

GPGUP                      0x5600_0068

GPHCON                   0x5600_0070

GPHDAT                    0x5600_0074

GPHUP                      0x5600_0078

三、引脚操作

以GPB为例,

1、首先通过宏定义将寄存器与其地址关联起来

    #define  GPBCON     (*(volatile  unsigned  long *)0x56000010)

    #define  GPBDAT      (*(volatile  unsigned  long *)0x56000014)

2、配置管脚功能

    GPBCON = (1 << (5*2));  //GPB5设置为输出

3、引脚输出

    

    GPBDAT &= ~(1 << 5);      //GPB5输出低电平

你可能感兴趣的:(GPIO接口编程)