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