当前位置:首页 > 单片机 > 单片机
[导读]GPIO(General Purpose I/O Ports)通用输入/输出端口,通俗地说,就是一些引脚可以通过它们输出高低电平或者通过它们读入引脚的状态--是高电平还是低电平。对于输入、输出 或者其他特殊功能,通过寄存器来扣件GPIO引脚

GPIO(General Purpose I/O Ports)通用输入/输出端口,通俗地说,就是一些引脚可以通过它们输出高低电平或者通过它们读入引脚的状态--是高电平还是低电平。
对于输入、输出 或者其他特殊功能,通过寄存器来扣件GPIO引脚,它们的寄存器是相似的:GPxCON用于选择引脚功能,GPxDAT用于读/写引脚数据;另外,GPxUP用于确定是否使用内部上拉电阻。x为A、B、....没有GPAUP寄存器。
s3c2440中有130个I/O端口,分为A~J共9组,GPA、GPB、..... GPJ
1. GPxCON寄存器
在功能配置方面PORTA与PORTB~PORTH/J有所不同,GPACON寄存器中每一位对应一个引脚(共23位),当某位被设置为0是,对应该位引 脚被设置为输出引脚(可以用于写入),此时我们可以对GPADAT寄存器(用于写引脚)进行写操作,当某位被设置为1时(相应引脚为地址线/或用于控 制),此时GONADAT无用.

PORTB~PORTH/J对寄存器操作完全相同,GPXCON每2位对应一个引脚:

00--输入。 01--输出。10--特殊功能。11--保留不用。

2.GPXDAT寄存器:【用来读写端口数据的】

GPXDAT用于读/写引脚,当配置GPXCON寄存器设置某引脚为输入时,读此寄存器可以得知相应引脚的变化,当配置GPXCON寄存器设置某引脚为输出时,通过写此此寄存器可以是相应引脚产生高低电平变化.

3.GPXUP寄存器:

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

1.2通过软件访对GPIO的访问:

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

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

#define GPB_OUT(1<<(2*5))

GPBCON = GPB_OUT; //设置GPB5为输出

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

注:当需要设计程序访问硬件时可参考芯片提供的电路原理图查找所使用引脚并进一步查找芯片手册中寄存器地址说明才确定所使用的寄存器的具体地址.

以上来自网络。

前面刚刚对GPIO寄存器位数那么多,操作繁琐抱怨

这里就发现一些对GPIO寄存器操作的技巧。

先记录下来。不过这位牛人的文章中好像很多地方显示都不正确,

自己尝试改改吧,不一定能改正确

设置GPIO寄存器技巧:
以GPF为例
1,设置控制位GPxCON寄存器的控制:


从引脚读数据 将GPxCON设置为输入:

#define GPFx_in~(3<<(x*2))

【注释:将GPF端口的第X位设置为输入】,

前面说到的寄存器的输入输出控制中:【PORTB~PORTH/J对寄存器操作完全相同,GPXCON每2位对应一个引脚:

00--输入。 01--输出。10--特殊功能。11--保留不用。】

3对应的二进制是11,将3先移位到 要操作的对应位,取反就成了00。

按此思路,如果要将相应的GPxCON设置为输出位,
只需将“01”左移即可:

#define GPGx_out(1<<(x*2))

2,对数据寄存器GPxDAT的控制:

回顾前面对GPxDAT的说明:

【一句话:GPxDAT是用来读写端口数据的。写数据的时候,直接将要写的值赋给GPxDAT即可。要读数据时,先将寄存器置高,然后再读。】

只对寄存器第x位赋0,其余值不变 : GPBDAT &=~(1<

只对寄存器第x位赋1,其余值不变 : GPBDAT |=(1<

这个移位虽然繁琐,但是弄清之后,感觉甚是方便。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

ARM系统几乎都采用Linux的操作系统,而且几乎所有的硬件系统都要单独构建自己的系统,与其他系统不能兼容,这也导致其应用软件不能方便移植,这一点一直严重制约了ARM系统的发展和应用。GOOGLE开发了开放式的Andro...

关键字: Linux x86 ARM

随着计算需求的多样化,尤其是随着移动设备、嵌入式系统和云计算的兴起,ARM 和 x86 架构之间的争论变得更加突出。ARM(高级 RISC 机器)和 x86 代表两种不同类型的处理器架构,每种架构都针对不同的工作负载和用...

关键字: Linux x86 ARM

从画质优化 (NSS) 到帧率提升 (NFRU) 和光线追踪(NSSD),Arm 计划覆盖移动端图形处理的多个维度,推动边缘 AI 图形革命。而未来通过持续的技术迭代,Arm也将保持在移动计算领域的技术领先,满足手游、A...

关键字: ARM 神经图形技术 GPU AI ML

7月31日消息,据媒体报道,芯片架构提供商Arm Holdings首席执行官Rene Haas宣布,公司正加大投入开发自有芯片产品,此举标志着其从传统IP授权模式向提供实体芯片的战略重大转变。

关键字: ARM META

7月28日消息,2025年,中国AI硬件市场规模将首次突破万亿元大关。

关键字: AI ARM

受生成式 AI 驱动, RISC-V 芯片市场快速发展。预计到2030年,RISC-V SoC出货量将达到1618.1亿颗,营收将达到927亿美元。其中,用于AI加速器的RISC-V SoC出货量将达到41亿颗,营收将达...

关键字: RISC-V CPU AI CUDA ARM 推理
关闭