本项目是在WiringPi的基础上修改而来。控制gpio的功能已经验证完成,其他拓展模块部分还有待测试。
- 下载到开发板上
git clone https://github.com/sc-bin/WiringPi.git
- 编译并安装到板子上
cd WiringPi
./build
可查看本项目的examples
文件夹下的例程。
在命令行可以输入以gpio
开头的指令,实现对引脚的控制
gpio -v
在命令行输入上面的命令,即可输出板子型号版本信息
gpio pins
命令行输入上面的命令,就会输出一张大表格,其中每一列的含义如下
Physical
: 板上排针的编号V
: 代表当前引脚的电平状态,1为高电平,0为低电平Mode
: 这个引脚当前的状态,IN或OUT表示输入输出,ALT数字表示引脚处于复用功能几,OFF则是初始未设置状态Name
: 引脚名称wPi
: wpi编号,在本项目内各种需要选择引脚的地方使用GPIO
: 芯片内部的gpio编号
gpio pin [function]
其中[function]
部分可以选择以下几个选项,会输出一张表格显示具备该功能的引脚的位置
pwm
uart
spi
i2c
例如我想知道板子旁边那堆引脚里,有哪些是硬件pwm引脚,则可以输入以下命令,会输出一个表格
gpio pin pwm
gpio mode [WpiNum] [mode]
其中[WpiNum]
是你要控制引脚的wpi编号,[mode]
是在下面几种中间选择:
in
: 输入模式,浮空up
: 输入模式,开启内部上拉down
: 输入模式,开启内部下拉out
: 输出模式off
: 回归初始未使用状态alt2
...alt5
: 设置引脚为第n个复用功能
例如我想把wpi编号为7的引脚设置为上拉输入,则在命令行输入如下
gpio mode 7 up
gpio read [WpiNum]
[WpiNum]
是你要控制引脚的wpi编号
例如我想读取wpi编号为7的引脚的输入状态,就在命令行输入如下
gpio read 7
gpio write [WpiNum] [status]
[WpiNum]
是你要控制引脚的wpi编号,[status]
为1或0。
例如我想让Wpi引脚7输出高电平
gpio write 7 1
gpio toggle [WpiNum]
[WpiNum]
是你要控制引脚的wpi编号,
让一个处于输出模式的引脚,输出的电平翻转,即7号脚本来输出1,执行完这个命令就会变成0,本来是0,执行完就会变成1。
gpio toggle 7
gpio pwm [wpipin] [range] [freq]
[wpipin]
是带硬件pwm的引脚的wpi编号[range]
是占空比,千分之一,取值为0到1000。(为了实现更高精度控制,比如控制舵机时,占空比增加百分之一对应旋转18度,而千分之一对应旋转1.8度)[freq]
是期望的频率,400到20000
比如我想输出一个频率1k,占空比百分之50(千分之500)的波形到硬件pwm1所在的3号引脚上,则在命令行输入如下指令
gpio pwm 3 500 1000
gpio pwmt [wpipin] [high_time] [period_time]
[wpipin]
是带硬件pwm的引脚的wpi编号[high_time]
单个周期内高电平部分的时长,以us为单位,不能大于[period_time]
[period_time]
周期的长度,以us为单位,1到500000,部分只能选择1到2500(walnutpi-1b的pwm4)
比如我想输出一个周期20ms,高电平长1.5ms的波形来控制舵机,舵机连接在pwm1所在的3号引脚上,则在命令行输入如下指令
gpio pwmt 3 1500 20000