3.K230 FPIOA&GPIO - 一切的根源
# FPIOA & GPIO - 一切的根源
# 1. 本节介绍
📝 本节我们来开启“点灯启蒙”第一课:你将学习如何用 K230 控制 GPIO 引脚,进而点亮 LED、读取按键输入。
🎯 学习目标:
1️⃣ 掌握 GPIO 的输出模式,点亮一盏 LED,为你通向硬件世界的第一步打光。
2️⃣ 理解 GPIO 的输入模式,识别按键状态,开启交互之门。
# 2. 名词速通卡
名词 | 含义说明 |
---|---|
GPIO | General Purpose I/O,芯片的“触手” |
FPIOA | 可编程I/O阵列,“功能分发中心” |
IOMUX | 引脚复用器,决定哪条信号接哪根脚 |
Pin | MicroPython 提供的 GPIO 接口 |
# 3. FPIOA 与 GPIO 的关系
K230 的 GPIO 本质上是逻辑信号通道,而 FPIOA 决定它们的“出口在哪”。
你得先通过 FPIOA 把信号线接出去,才能让 LED 亮起来、让按键按下有反应。
🪢 类比理解:
- GPIO:电力公司,能发电
- FPIOA:电网配线,决定电送到哪栋楼
- 物理引脚:用户家门口的电源插座
# 4. 点亮一个 LED 的最小代码
from machine import Pin, FPIOA
import time
fpioa = FPIOA()
# 将 GPIO62 映射到物理引脚 IO62
fpioa.set_function(62, FPIOA.GPIO62)
# 创建 GPIO62 对应的输出对象(默认高电平熄灭)
led = Pin(62, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
# 闪烁效果:亮灭切换
while True:
led.low() # 点亮(共阳LED)
time.sleep_ms(500)
led.high() # 熄灭
time.sleep_ms(500)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 5. 加点交互:按键控制LED
# 配置按键引脚为输入模式
fpioa.set_function(53, FPIOA.GPIO53)
button = Pin(53, Pin.IN, Pin.PULL_DOWN)
led.high() # 初始状态熄灭
# 状态变量
led_on = False
last_time = 0
debounce = 20
while True:
now = time.ticks_ms()
if button.value() == 1 and time.ticks_diff(now, last_time) > debounce:
led_on = not led_on
led.low() if led_on else led.high()
last_time = now
time.sleep_ms(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 6. 解码一下这些操作
🧩 FPIOA 映射
用 .set_function(pin, func)
把功能“绑”到具体引脚,就像给每条电缆装上插头。
⚙️ GPIO配置 Pin(pin号, 模式, 上下拉, 驱动能力)
是控制面板,输出、输入、电平行为都在这设定。
⏱️ 按键消抖 肉眼看不见的“机械抖动”会导致多次触发,必须加个“冷静期”。
🔦 点灯原理 如果是共阳极LED,那么输出低电平就能让它亮起来,反之熄灭。
# 7. 注意事项 & 小技巧
- 先配置 FPIOA,再用 GPIO,否则你连线都没接好,点灯个鬼。
- 消抖时间别太短,否则按一下亮两次你哭不哭?
- 共阳极LED 是高电平熄灭,低电平点亮,别搞反。
- 驱动能力设为7 就是全力输出,能亮就亮最亮!
# 8. 参考资料
🌌 点亮第一盏灯的时候,有人感觉是“我在操控硬件”,但其实,是“硬件开始回应你了”。如果你没成功,那八成是 FPIOA 没设好,回头翻一眼 😅。
# 免责声明
本文档及所有内容(包括文字、图片、代码等)均为作者基于嘉立创庐山派K230开发板公开资料和个人使用经验整理分享,仅供学习和技术交流之用。
所有涉及的品牌名称、商标、图片及相关资源均归嘉立创官方所有,未经授权不得用于商业宣传或其他用途。
作者与嘉立创官方无任何隶属或代理关系,内容不构成任何形式的官方承诺或保证。
用户在使用相关资源时,应遵守相应的开源协议和法律法规,确保合法合规。
如涉及版权问题,请联系作者或嘉立创官方处理。
帮助我们改善此页面 (opens new window)
上次更新: 2025/07/12, 16:01:22