本项目是一个在linux下控制gpio的库,提供Python
、C
、 shell
3种调用方式
通过直接控制底层寄存器的方式,能强制使用那些被分配给其他驱动使用的引脚
example-c
文件夹下有例程
- 编写代码的时候调用头文件
#include "gpio.h"
- 编译代码的时候使用
-lgpio
,如gcc main.c -lgpio -o exe
操作寄存器需要以管理员权限运行,当代码以普通用户运行时底层会通过与一个后台服务通信来间接操作寄存器,速度会慢一点点
while (1)
{
pin_write(LED, 1);
pin_write(LED, 0);
}
以管理员权限运行时,高电平与低电平的时长都接近1us,示波器测算频率为530k 以普通用户运行时,高电平与低电平的时长都接近250us,示波器测算频率为2.3k
所有命令都支持自动补全,按两下TAB键就能查看有哪些可选参数
gpio pins
命令行输入上面的命令,就会输出一张大表格,其中每一列的含义如下
Physical
: 板上排针的编号,后续命令操作时都使用此编号,C语言编程时也使用此编号Name
: 引脚名称,在python编程时可使用此名称mode
: 引脚当前所处工作模式:OFF
: 初始状态未设置IN
: 输入模式OUT
: 输出模式其他
: 引脚复用功能
V
: 当引脚为 IN/OUT 模式时,引脚的电平状态,1为高电平,0为低电平
gpio pin [function]
会输出一张表格显示具备该功能的引脚的位置
[function]
:功能类型,可选择以下几个选项pwm
uart
spi
i2c
例如我想知道板子旁边那堆引脚里,有哪些是硬件pwm引脚,则可以输入以下命令,会输出一个表格
gpio pin pwm
gpio mode [PIN] [mode]
[PIN]
:目标引脚的排针编号,[mode]
: 在下面几种中间选择:IN
: 输入模式,浮空IN_PULLUP
: 输入模式,开启内部上拉IN_PULLDOWN
: 输入模式,开启内部下拉OUT
: 输出模式OFF
: 回归初始未使用状态
例如我想把核桃派1b上编号为41的板载按键设置为上拉输入,则在命令行输入如下
gpio mode 41 IN_PULLUP
gpio read [PIN]
[PIN]
目标引脚的排针编号
例如我想读取核桃派1b上编号41的板载按键的输入状态,就在命令行输入如下
gpio read 41
gpio write [PIN] [VALUE]
[PIN]
目标引脚的排针编号[VALUE]
为1或0。
例如我想让核桃派1b上编号42的板载led输出高电平
gpio write 42 1
gpio toggle [PIN]
[PIN]
目标引脚的排针编号
让一个处于输出模式的引脚,输出的电平翻转,即42号脚本来输出1,执行完这个命令就会变成0,本来是0,执行完就会变成1。
gpio toggle 42