外观
gpio 输入示例
2025-10-29
概述
本文介绍了如何在 RuiChing Studio 中创建一个 gpio_input 示例工程,并将其编译后在开发板上调试运行。旨在帮助读者进一步熟悉 RuiChing Studio 开发环境,掌握 gpio 输入模式的基本配置与使用方法,以及命令的创建和运用。
GPIO 子系统
GPIO 子系统是 Linux、RT-Thread 等操作系统中用于管理通用输入输出引脚的核心框架。在 RT-Thread 中,GPIO 子系统提供引脚编号获取、输入输出模式配置、电平读写控制及中断回调绑定等功能,支持通过标准化接口实现芯片引脚的多功能管理与操作。
获取 GPIO 的输入电平信号
本示例以 GPIO 的输入电平信号为实践目标,一个 GPIO 作为输出模式,另外一个 GPIO 作为输入模式,实现获取 GPIO 的输入电平信号的效果。
引脚连接
GPIO1_A0(32) 与 GPIO1_A1(33) 通过杜邦线连接:

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
applications/gpio_input_example.c
#define OUTPUT_GPIO 33 // 定义33号为输出引脚
#define INPUT_GPIO 32 // 定义32号为输入引脚
rt_err_t gpio_input_example(void)
{
rt_uint8_t value = 0;
rt_uint32_t count = 10;
rt_pin_mode(OUTPUT_GPIO, PIN_MODE_OUTPUT); // 设置引脚模式
rt_pin_mode(INPUT_GPIO, PIN_MODE_INPUT); // 设置引脚模式
LOG_I("gpio input startup");
while (count--)
{
rt_pin_write(OUTPUT_GPIO, PIN_HIGH); // 33号引脚设置电平
value = rt_pin_read(INPUT_GPIO); // 读取32号引脚电平
LOG_I("input gpio %d level is %s", INPUT_GPIO,
(value) ? ("high") : ("low"));
rt_thread_mdelay(1000);
rt_pin_write(OUTPUT_GPIO, PIN_LOW);
value = rt_pin_read(INPUT_GPIO);
LOG_I("input gpio %d level is %s", INPUT_GPIO,
(value) ? ("high") : ("low"));
rt_thread_mdelay(1000);
}
LOG_I("gpio input end");
return RT_EOK;
}运行示例
操作步骤
- 将 GPIO1_A0(32)与 GPIO1_A1(33)通过杜邦线连接
- 将程序下载到开发板
- 打开串口终端连接开发板
- 输入
gpio_input_example命令
预期结果
GPIO 输出引脚每隔 1 秒转换 1 次电平,输入引脚会检测电平的变化,然后输出电平状态。
rtt 终端
msh />gpio_input_example
[I/example.gpio] gpio input startup
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] input gpio 32 level is high
[I/example.gpio] input gpio 32 level is low
[I/example.gpio] gpio input end