# GPIO 使用教程

## 什么是 GPIO？

**GPIO（通用输入输出）引脚**是微控制器最基础的外设之一。它们可以被配置为：

* **输入模式**：用于读取外部信号（如按键）
* **输出模式**：用于控制外部设备（如 LED）
* **带上下拉电阻与驱动能力**：适应不同电气连接场景

## K230 GPIO 特性概览

| 特性    | 描述                                             |
| ----- | ---------------------------------------------- |
| 引脚数量  | 共 64 个 GPIO 引脚                                 |
| 模式支持  | 输入、输出                                          |
| 驱动能力  | 0～7 可调（数值越大，驱动能力越强）                            |
| 上下拉配置 | 支持上拉（PULL\_UP）、下拉（PULL\_DOWN）、无上下拉（PULL\_NONE） |

## 应用示例：控制输出引脚高低电平

本示例演示了如何将 Pin2 配置为输出模式，并控制其输出电平。

### 示例代码

```python
from machine import Pin

# ========== 初始化 GPIO ==========
# 将 Pin2 设置为输出，关闭上下拉，设置驱动能力为 7（最大）
pin = Pin(2, Pin.OUT, pull=Pin.PULL_NONE, drive=7)

# ========== 控制电平输出 ==========
# 设置为高电平
pin.value(1)

# 设置为低电平
pin.value(0)
```

## 接口说明

| 方法                                | 说明                          |
| --------------------------------- | --------------------------- |
| `Pin(pin_num, mode, pull, drive)` | 初始化 GPIO 引脚                 |
| `pin.value(val)`                  | 设置输出电平（0 低，1 高），或获取当前引脚电平状态 |
| `pin.init(...)`                   | 重新初始化或修改引脚设置                |

## 参数说明

| 参数名       | 类型    | 示例值             | 描述                            |
| --------- | ----- | --------------- | ----------------------------- |
| `pin_num` | `int` | `2`             | 引脚编号（如 Pin2）                  |
| `mode`    | 枚举    | `Pin.OUT`       | 模式：`Pin.IN`（输入），`Pin.OUT`（输出） |
| `pull`    | 枚举    | `Pin.PULL_NONE` | 上下拉配置：无上拉/下拉、上拉、下拉            |
| `drive`   | `int` | `0` \~ `7`      | 驱动能力等级，值越大，驱动能力越强             |

## 应用场景举例

| 场景        | 示例描述             |
| --------- | ---------------- |
| 控制 LED 灯  | GPIO 输出高电平点亮 LED |
| 读取按钮状态    | 配置为输入模式读取按键信号    |
| 控制继电器或蜂鸣器 | 通过 GPIO 输出电平控制外设 |
| 通用逻辑控制    | 作为高低电平的逻辑输出控制信号  |

## 特别注意事项

* GPIO 实际输出电流能力受驱动等级、供电电压和负载限制，应避免直接驱动大功率设备。
* 所有引脚在使用前都需通过 **IOMUX/FPIOA 工具**进行多功能复用配置，确保对应功能映射。

## 延伸阅读

* 📘 [K230 Pin 模块 API 手册](../../api/machine/K230_CanMV_Pin模块API手册.md)
* 📘 [K230 FPIOA 模块 API 手册](../../api/machine/K230_CanMV_FPIOA模块API手册.md)
* 📥 [K230 引脚功能对照表（Excel）](https://kendryte-download.canaan-creative.com/developer/k230/HDK/K230%E7%A1%AC%E4%BB%B6%E6%96%87%E6%A1%A3/K230_PINOUT_V1.2_20240822.xlsx)
* 🛠️ [K230 IOMUX 配置工具](https://www.kendryte.com/zh/tools/dts_config_generation_tool)
