Linux 内核让您可以轻松“玩”GPIO。
有一个用于处理 GPIO 的包含文件:
#include <linux/gpio.h>
GPIO 必须在使用前分配,但当前的实现并未强制执行此要求。基本的分配函数是:
int gpio_request(unsigned int gpio, const char *label);
gpio 参数指示需要哪个 GPIO,而 label 将一个字符串与其相关联,该字符串稍后可以出现在 sysfs 中。通常的约定适用:零返回码表示成功;否则返回值将是一个负错误号。可以通过以下方式将 GPIO 返回到系统:
void gpio_free(unsigned int gpio);
一些 GPIO 用于输出,其他用于输入。适当接线的 GPIO 可用于任一模式,但在任何给定时间只有一个方向处于活动状态。内核代码必须通知 GPIO 内核如何使用一条线;这是通过这些功能完成的:
int gpio_direction_input(unsigned int gpio);
int gpio_direction_output(unsigned int gpio, int value);
在任何一种情况下,gpio 都是 GPIO 编号。在输出的情况下,还必须指定GPIO的值(零或一); GPIO 将作为调用的一部分进行相应设置。对于这两个函数,返回值再次为零或负错误号。 (合适的)GPIO 的方向可以随时更改。
对于输入 GPIO,可以通过以下方式读取当前值:
int gpio_get_value(unsigned int gpio);
这个函数返回提供的gpio的值;它没有返回错误代码的规定。假设(几乎在所有情况下都是正确的)调用 gpio_direction_input() 时会发现任何错误,因此检查该函数的返回值很重要。
始终可以使用 gpio_direction_output() 设置输出 GPIO 的值,但是,如果已知 GPIO 已经处于输出模式,则 gpio_set_value() 可能更有效:
void gpio_set_value(unsigned int gpio, int value);
欲了解更多信息,请查看此链接:enter link description here