1.前言
树莓派自带2*20引脚,可以像玩单片机一样玩树莓派,其有普通的GPIO,也有复用为串行通信的UART、IIC、SPI。与Arduino库和stm32的Hal库一样,树莓派也有wiringPi和Bcm2835用于IO的基础库可以使用,帮助开发者快速开发应用。
WiringPi是应用于树莓派平台的GPIO控制库函数,其使用C或者C++开发并且可以被其他语言包转,例如python、ruby等。WiringPi中的函数类似于Arduino的wiring系统,这使得熟悉arduino的用户使用wringPi更为方便。
bcm2835库是树莓派cpu芯片的库函数,相当于stm32的固件库一样,底层是直接操作寄存器。而wiringPi库和python的RPi.GPIO库其底层都是通过读写linux系统的设备文件操作设备。我使用的开发环境为:
- 树莓派4B;
- 树莓派原生Raspbian系统。
2.安装WiringPi
-
安装wiringpi:sudo apt-get install wiringpi
-
wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功:gpio-v
-
读取GPIO定义:gpio readall
BCM编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号;
wiringPi编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。
注意:若出现Oops - unable to determine board type… model: 17
我是使用的4B,最后发现是wiringPi版本问题;按照如下官网指引升级版本即可:
http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
可以访问WiringPi官网来查看使用方法和示例。
3.安装Bcm2835
从bcm2835官网下载最新版本的库,然后解压安装:
tar zxvf bcm2835-1.xx.tar.gz
cd bcm2835-1.xx
./configure
make
sudo make check
sudo make install
在/home/pi/bcm2835-1.68/examples/blink目录下有示例blink.c,右击使用Geany(系统自带的代码编辑器)打开,为了让控制台有输出添加了两句printf,然后Ctrl+S保存:
在文件管理器上方“工具”中点击“在终端中打开当前文件夹”将弹出一个终端,且已经定位在当前文件夹下,依次输入
gcc -o blink blink.c -l bcm2835
sudo ./blink
其中,使用gcc编译指令时需要使用 -l bcm2835 链接到bcm库。运行时,由于bcm2835库是树莓派cpu芯片的库函数,运行时需要权限,所以要加sudo。