1. api接口
请求gpio口
int gpio_request(unsigned gpio, const char *label)
释放gpio口
void gpio_free(unsigned gpio)
判断gpio索引号是否有效(gpio口是否存在)
int gpio_is_valid(int number);
设置输出:
int gpio_direction_output(unsigned gpio, int value)
设置输入:
int gpio_direction_input(unsigned gpio)
将gpio口转换成对应的中断号
int gpio_to_irq(unsigned gpio);
中断请求
request_irq
2. 代码路径:
2.1 drivers/gpio/gpiolib.c
3. 调试GPIO口
执行:
echo 100 > /sys/class/gpio/export
在/sys/class/gpio目录下会生成子目录:gpio100,该目录有以下这些文件:
active_low
direction
power
subsystem
uevent
value
cd /sys/class/gpio/gpio100
gpio口设置成输出:
echo out > direction
输出高电平:
echo 1 > value
输出低电平:
echo 0 > value
另外,有个lua内核的移植项目,也已经包含了gpio口的读写功能,代码路径如下:
https://github.com/negtise/luak-arm
使用方法见代码根目录下的HowTo.txt
另外,通过cat /sys/kernel/debug/gpio 可以查看gpio口的信息。
4. 参考文档:
linux/Documentation/gpio.txt
---------------------
作者:i2cbus
来源:CSDN
原文:https://blog.csdn.net/I2Cbus/article/details/41116823
版权声明:本文为博主原创文章,转载请附上博文链接!