这一节课讲了一个具体的案例:「ARM 2410s」的I/O接口
前置概念:
<aside>
💡
整体结构:
- CPU(大脑):负责执行底层指令
- GPIO 控制器:内含
GPCCON , GPCDAT , GPCUP 这些寄存器
- 针脚:芯片边缘的金属引脚
</aside>
GPC(General Purpose I/O Port C,通用输入/输出端口 C 组)

**本质:**GPC是这个叫做「S3C2410」芯片上 **特定的一组物理针脚。**S3C2410 共有 117 个 I/O 端口,为了管理方便,芯片设计者将它们分成了 A、B、C、D...H 等若干组。
GPCCON(GPIO C Port Configuration Register)
- 作用:定性 - 用来决定这个针脚到底要干什么?
- 逻辑:
- 你是要当“输入口”(读开关状态)?
- 还是要当“输出口”(控制 LED 亮灭)?
- 还是当“特殊功能口”(比如串口传输)?
- 什么时候用:
- 在驱动初始化(Init)阶段,必须先配置 GPCCON
- 比如,把引脚设置为 Output 模式,否则后续操作无效。
<aside>
💡
一些无关紧要的实现细节:
这是一个Multiplexer(MUX)。不记得的话回忆一下 COMP2421
- 写入
00 (Input): MUX 切断输出,接通输入缓冲器。针脚的电压变化传回内部。
- 写入
01 (Output): MUX 接通 GPCDAT 到针脚的通路。
- 写入
10 (LCD): MUX 断开 GPIO ,直接把针脚连通到芯片内部的 LCD 控制器 上。
</aside>
GPCDAT(GPIO C Port Data Register)
- 作用:定量 - 写入/读取/存储针脚的具体状态
- 逻辑:
- 如果配置为输出:写
1 = 输出高电平(灯亮);写 0 = 输出低电平(灯灭)。
- 如果配置为输入:读这个寄存器,就能知道外部是高电平还是低电平。
- 如果配置为输入:读这个寄存器,就能知道外部是高电平还是低电平。
- **什么时候用:**在驱动的
write 函数中,操作的就是这个寄存器