嵌入式学习笔记之GPIO

来源:互联网 发布:e卡销官网源码 编辑:程序博客网 时间:2024/05/17 00:57

嵌入式学习笔记之GPIO

         GPIO,意为通用输入/输出端口,根据它们可以读取端口的高低电平或者读入引脚状态。S3C2410芯片共有117个I/O端口,共分为8组:A~H。分别为:GPA、GPB…GPH。端口的输入输出功能可以通过设定特定的端口值来确定。

         控制s3c2410的GPIO端口的寄存器有3类,分别是GPxCON、GPxDAT、GPxUP (x=A~H)

         GPxCON:GPIO控制寄存器,可以设置选定GPIO口的输入输出方式和功能。GPA组的23个端口比较特殊,只能是输出方式。GPACON的每一位对应一个引脚,当某位为0时,对应引脚为输出端口,否则为复用功能。

     GPBGPH端口的GPxCON寄存器使用方法一致,每两位控制一个引脚,00时为输入I/O口,01时为输出I/O口,10时为复用功能,11保留。

         GPxDAT:此引脚用于读写引脚的状态,即端口数据。当引脚配置为输出时,给该寄存器某位写1,则对应引脚输出高电平,写0输出低电平。当引脚配置为输出时,读该寄存器可以得到端口电平状态。

        GPxUP:该寄存器可以设置引脚是否使用上拉电阻,某位为0时对应引脚使用上拉电阻,某位为1时不使用上拉电阻。注意:GPA组没有GPxUP寄存器,即没有上拉电阻。

        1、何为上拉电阻、下拉电阻:

       上拉电阻                                               下拉电阻

                                                   

        上拉电阻是针对NPN来说的,下拉电阻是针对PNP来说的!不管是上拉电阻还是下拉电阻都是为了使集电极有确定的电位!

        比如对NPN来说,当不用上拉电阻的时候,若基集为正,则导通,集电极为0。但当基集为0,则截止,此时集电极是悬空的,电位无法确定!一旦加了上拉电阻,当导通的时候,集电极为0,当截止的时候,集电极为正。

       PNP也一样,导通的时候集电极为正,截止的时候集电极为0。

       2、GPIO端口配置方法:

       单个引脚的操作无非就三种情况:输出高低电平,检测引脚状态,中断。对引脚的操作一般是通过特定寄存器的配置完成。

如图,根据LED 的硬件电路图,实现点亮LED:

#defineGPFCON(*(volatile unsigned long *)0x56000050)#defineGPFDAT(*(volatile unsigned long *)0x56000054)#defineGPF4_out(1<<(4*2))#defineGPF5_out(1<<(5*2))#defineGPF6_out(1<<(6*2))#defineGPF7_out(1<<(7*2))void  wait(volatile unsigned long dly){for(; dly > 0; dly--);}int main(void){unsigned long i = 0;GPFCON = GPF4_out|GPF5_out|GPF6_out|GPF7_out;// 将LED1-4对应的GPF4/5/6/7三个引脚设为输出while(1){wait(30000);GPFDAT = (~(i<<4)); // 根据i的值,点亮LED1~4if(++i == 8)i = 0;}return 0;}


 

原创粉丝点击