一、GIPIO介绍
General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
1.GPIO的优点
低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。
集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!
低成本:您不用为没有使用的功能买单。
快速上市:不需要编写额外的代码、文档,不需要任何维护工作。
可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
2.GPIO的寄存器
GPxCON 寄存器
用于配置引脚功能。 PORT A 与 PORT B~PORT H/J 在功能选择上有所不同,GPACON 中每一位对应一根引脚,共 23 个引脚。当某位被设为 0 时候,相应引脚为 输出引脚。此时我们可以在GPADAT 中相应的写入 1或者 0 来让此引脚输出高电平或者低电平;当某位被设为1时,相应引脚为地址线或用于地址控制,此时GPADATA无用。
一般而言 GPACON 通常被设为 1 ,以便访问外部器件。
PORT B~PORT H/J在寄存器操作方面完全相同,GPxCON 中每两位控制一根引脚,00 输入
01 输出
10 特殊功能
11 保留不用
GPxDAT 寄存器
GPxDAT用于读写引脚,当引脚被设为输入时候,读此寄存器可知道相应引脚的电平状态高还是低,当引脚被设为输出时候,写此寄存器的位,可令引脚输出高电平还是低电平。GPxUP寄存器
GPxUP寄存器某位为1时,相应管脚没有内部上拉电阻;为 0 时候 相应管脚有内部上拉电阻。
上拉电阻作用在于,当GPIO 引脚处于第三种状态时候,既不是输出高电平,也不是输出低电平。而是呈现高阻态,相当于没有接芯片。它的电平状态由上下拉电阻决定。
二、控制LED实例
1.查看硬件原理图

2.查看数据手册
在三星公司提供的DataSheet手册中找到介绍GPIO的章节

3.确定关键定义
GPJ0CON寄存器
寄存器地址:0xE0200240
要控制的位数:[15:12]
要设置的二进制数据:0b0001GPJ0PUD寄存器
寄存器地址:0xE0200248
要控制的位数:[7:6]
要设置的二进制数据:0b00GPJ0DAT寄存器
寄存器地址:0xE0200244
要控制的位数:[3]
要设置的二进制数据:0b1
3.确定关键定义
GPJ0CON寄存器
寄存器地址:0xE0200240
要控制的位数:[15:12]
要设置的二进制数据:0b0001
GPJ0PUD寄存器
寄存器地址:0xE0200248
要控制的位数:[7:6]
要设置的二进制数据:0b00
GPJ0DAT寄存器
寄存器地址:0xE0200244
要控制的位数:[3]
要设置的二进制数据:0b1
4.编写程序
start:
@;配置GPJ0CON寄存器 Address=0xE0200240 [15:12]=0b0001
ldr r0,=0xE0200240
ldr r1,=0x1000
str r1,[r0]
@;配置GPJ0PUD寄存器 Address=0xE0200248 [7:6]=0b00
ldr r0,=0xE0200248
ldr r1,=0x0
str r1,[r0]
@;配置GPJ0DAT寄存器 Address=0xE0200244 [3]=1
ldr r0,=0xE0200244
ldr r1,=0x4
str r1,[r0]
5.实例测试
生成目标文件
arm-linux-gcc -c led.S
生成可执行文件
arm-linux-gcc -Ttext 0x34000000 -nostartfiles -nostdlib led.o -o led
生成独立执行的二进制
arm-linux-objcopy -O binary led led.bin
使用tftp命令下载
tftp 0x34000000 led.bin
使用go命令执行
go 0x34000000
6.简单的流水灯实现
.global _start
_start:
ldr r0, =0x11111111
ldr r1, =0xE0200240
str r0, [r1]
ldr r0, =0x11111111
ldr r1, =0xE02000A0
str r0, [r1]
flash:
ldr r0, =(1<<1)
ldr r1, =0xE02000A4
str r0, [r1]
ldr r0, =~(1<<3)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<4)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<5)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<1)
ldr r1, =0xE02000A4
str r0, [r1]
bl delay
b flash
delay:
ldr r2, =100000000
ldr r3, =0x0
delay_loop:
sub r2, r2, #1
cmp r2, r3
bne delay_loop
mov pc, lr
上一篇:ARM处理器寻址方式
下一篇:S5PV210启动过程详解
推荐阅读最新更新时间:2026-03-20 16:55
- ADR435B 5 Vout 超低噪声 XFET 电压基准的典型应用,具有灌电流和拉电流能力
- 使用 Analog Devices 的 ADP8140 的参考设计
- NCP699SN30T1G 150mA、3 路输出电压 CMOS 低 Iq LDO 的典型应用,在 TSOP-5 中启用
- ZTL431过压/欠压保护电路典型应用
- 使用 Microchip Technology 的 DVR2802B3 的参考设计
- 开源的浮游生物监测分析设备PlanktoScope
- STK503,旨在评估 AT90USB AVR MCU 的入门套件,通过 AVR Studio 支持 JTAGICE mkII 和 AVRISP mkII
- 使用 BittWare 的 XCVU190 的参考设计
- 远程声控参考设计
- NCP4354AADAPGEVB,用于 NCP4354、65W 适配器关闭模式控制器的评估板

英飞凌PSoC 6 电位器控制LED闪烁状态并水墨屏显示——源码
Follow me第三季第4期任务
非常经典的关于LLC的杨波博士论文
LTC6102HVHMS8
1CIS223-04TG3M






京公网安备 11010802033920号