作者:刘凯 链接:https://www.zhihu.com/question/19704852/answer/19760467 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果是在已经适配好的linux内核上,那么相信已经有了完成的gpiochip,可以在用户空间/sys/class/gpio目录下看到,如:
exportgpiochip0/gpiochip32/gpiochip64/gpiochip96/unexport然后对照手册看下需要用到哪个GPIO,举个例子:
如果使想用GPIO1_20
那么GPIO Number就是 1 x 32 + 20 = 54使用分两种情况:
1. 用户空间:echo 54 > export这样在这个/sys/class/gpio目录下就会产生gpio54文件夹在文件夹下需要用到的有两个文件: direction 用来配置输入(in)还是输出(out) value 如果这个GPIO配置成了输入,那么通过cat value可以查看当前这个GPIO是什么电位;如果配置成了输出,那么可以通过echo 1/0 > value给这个GPIO口指定输出电平。2. 内核空间(驱动):
#include <linux/gpio.h>gpio_request_one(54, GPIOF_INIT_HIGH, "gpio1_20")这里是配置成输出,默认高电平,别名(label)为gpio1_20——就是给你的IO口取个名字。gpio_request_one(54, GPIOF_IN, "gpio1_20")这个就是配置成输入。使用完后别忘了freegpio_free(54);具体GPIO接口详见: