5.1 GPIO硬件介绍

  可以不通过他们输出高低电平或者通过它们读入应交的状态

  S3C2410有117个I/O端口,分为A~H共8组:GPA、GPB、。。。GPH

      S3C2440有130个I/O端口,分为A~H共9组:GPA、GPB、。。。GPJ

  5.1.1通过寄存器来操作GPIO引脚

    GPxCON用于选择引脚的功能,GPxDAT用于读/写引脚数据,GPxUP用于确定是否使用内部上拉电阻。x为ABCD。。。H/J,没有GPAUP寄存器

     (1)GPxCON寄存器

    GPACON中每一位对应一根引脚(23根)为0时为输出引脚,设置GPADAT让相应引脚输出低或高电平,1时相应引脚为地址线或地址控制此时GPADAT无用

   (2)GPxDAT寄存器

    GPxDAT寄存器用于读/写引脚

     (3)GPxUP寄存器

           某位为1时,相应引脚无内部上拉电阻,为0时,相应引脚使用内部上拉电阻

  5.1.2怎样使用软件来访问硬件

       (1)访问单个引脚

     单个引脚操作3种:输出高电平、检测引脚状态、中断,对某个引脚的操作一般通过读写寄存器完成

   (2)以总线方式访问硬件

              NORflash为总线访问

5.2GPIO操作实例:LED和按键 

  5.2.1 硬件设计

5.2.2程序设计及代码详解

  (1)汇编源代码:

  Makefile:

2行-g加入GDB能使用的调试信息,-c只编译不链接

3行-T指定代码的代码段

4行-O指定的格式来输出文件(BFD库中描述的标准格式)

6行-f忽略不存在的文件,强制删除,无任何提示。

(2)使用c语言代码点亮一个LED

  c语言程序执行的第一条指令,并不在main函数中。生成一个c程序的可执行文件时,编译器通常会在我们的代码中加上几个被称为启动文件的代码------crt1.o、crti.o、crtend.o等,它们是标准库文件。这些代码设置c程序的堆栈等,然后调用main函数

  ctr0.S:

c程序:

Makefile:

6行:-D反汇编所有段

       -m可以查看更多支持的指令集架构

3、使用按键来控制LED