Linux 查看gpio申请情况

本文介绍了一种通过/sys/kernel/debug/gpio文件查看已申请GPIO状态的方法,包括输入输出状态及电平,适用于不确定GPIO状态或内核申请情况的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用GPIO的时候,有时候不知道GPIO的状态,也不知道在内核中GPIO是否申请成功。

可以通过/sys/kernel/debug/gpio这个文件来查看。这个文件显示了申请成功的GPIO的输入输出状态和电平。

测试情况:
 

uranus-a63:/sys/kernel/debug # cat gpio
cat gpio
GPIOs 0-255, platform/pio, pio:
 gpio-34  (card-pwr-gpios      ) out lo
 gpio-35  (SPK                 ) out lo
 gpio-36  (sdc0 cd             ) in  lo
 gpio-37  (ilitek-irq-gpio     ) in  hi
 gpio-38  (ilitek-reset-gpio   ) out hi
 gpio-97  (vibe  ) out lo     表示gpio_request函数里的字符串参数
 gpio-142 (?                   ) in  lo
 gpio-143 (?                   ) in  lo
 gpio-144 (?                   ) in  lo
 gpio-145 (?                   ) in  lo
 gpio-230 (insert_det_gpio     ) in  hi
 gpio-231 (type_det_gpio1      ) in  hi
 gpio-232 (?                   ) in  lo
 gpio-233 (otg_id              ) in  hi
 gpio-235 (edp_pwr_en          ) in  hi
 gpio-236 (bf3005_light_trig   ) out lo

GPIOs 352-415, platform/r_pio, r_pio:
 gpio-355 (pax,vcc5v_power     ) out hi
 gpio-356 (pmu_bat_chggreenled_) out lo
 gpio-357 (pmu_bat_chgredled_ct) out lo
 gpio-360 (?                   ) out hi
 gpio-362 (pax,sp-interrupt    ) in  lo
 gpio-363 (pax,sp-sleep-control) out lo
 gpio-364 (pax,sp_status       ) in  lo
 gpio-365 (pax,sp_to_ap_ack    ) out lo
 gpio-366 (pax,ap_to_sp_prdwn  ) out lo
 gpio-367 (pax,sp-power        ) out hi
 gpio-384 (wlan_regon          ) out lo
 gpio-385 (wlan_hostwake       ) in  lo
 gpio-386 (bt_rst              ) out lo
 gpio-387 (bt_hostwake         ) in  lo
 gpio-388 (bt_wake             ) out lo
 gpio-389 (chip_en             ) out lo
 

scanf("%s", addressBook[i].email); printf("请输入修改后的QQ:"); scanf("%s", addressBook在 Linux 中,申请 GPIO 可以通过以下步骤实现: 1. 首先,需要确定你要使用的 GPIO 引[i].qq); printf("修改成功!\n"); return; } } printf("未找到该联系脚的编号,例如使用引脚 18。 2. 接下来,需要使用 `gpio_request` 函数来申请 GPIO 引人!\n"); } // 按学号排序 void sortById(struct AddressBook *addressBook, int count) { for (脚的使用权限,该函数的原型为: ``` int gpio_request(unsigned int gpio, const char *label); ``int i = 0; i < count - 1; i++) { for (int j = 0; j < count -` 其中,`gpio` 参数为 GPIO 引脚的编号,`label` 参数为一个字符串,表示你所申请 i - 1; j++) { if (strcmp(addressBook[j].id, addressBook[j + 1].id) > GPIO 引脚的用途。该函数返回 0 表示成功,否则表示失败。 3. 申请成功后,0) { struct AddressBook temp = addressBook[j]; addressBook[j] = addressBook[j + 1]; address可以使用 `gpio_direction_input` 或 `gpio_direction_output` 函数来配置 GPIO 引脚的输入输出方向。例如,如果需要Book[j + 1] = temp; } } } printf("按学号排序成功!\n"); } //将 GPIO 引脚 18 配置为输出引脚,可以使用如下代码: ``` gpio_direction_output(18, 保存通讯录到文件 void saveToFile(struct AddressBook *addressBook, int count) { FILE *fp = fopen("1); // 第二个参数为初始值,这里设置为 1 ``` 4. 在使用 GPIO 引脚完成addressbook.txt", "w"); if (fp == NULL) { printf("文件打开失败!\n"); return; 后,需要使用 `gpio_free` 函数释放该 GPIO 引脚的使用权限,该函数的原型为: ``` } for (int i = 0; i < count; i++) { fprintf(fp, "%s %s %s % void gpio_free(unsigned int gpio); ``` 其中,`gpio` 参数为需要释放的 GPIO 引脚的编号。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值