树莓派4B学习笔记(5)—— 来个GPIO操作吧

一. GPIO库介绍

对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。

python

  • 开发语言:python
  • 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。

wiringPI

  • 开发语言:C、C++
  • 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。

BCM2835

  • 开发语言:C、C++
  • 简单介绍:BCM2835库是树莓派CPU芯片的库函数,相当于STM32的固件库一样,底层是直接操作寄存器。

二. 引脚编号方式

树莓派4B学习笔记(5)—— 来个GPIO操作吧_第1张图片
GPIO的编号有三种不同的方式:

【1】插座引脚编号方式
编号侧重P1插座侧,从上到下,从左到右。正如上图的Header一栏。

【2】BCM2835编号方式
编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号。正如上图BCM GPIO一栏。

【3】wiringPi编号方式
编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。正如上图WiringPi一栏。

三. 来个GPIO操作吧

下面我们尝试通过编程使GPIO0(11号引脚)输出一个指定电平吧。

1. python库

先执行以下指令,安装一下库:

pip install RPi.GPIO
pip install spidev

安装完后,打开IDE,输入以下代码后运行:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)  # BOARD编号方式,基于插座引脚编号
GPIO.setup(11, GPIO.OUT)  # 输出模式

# GPIO.setmode(GPIO.BCM)  # 若使用BCM编号方式,上两行代码应这样写
# GPIO.setup(17, GPIO.OUT)  # 对应为17号脚
 
while True:
    GPIO.output(11, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(11, GPIO.LOW)
    time.sleep(1)

通过万用表测量电平,可以看到11号脚每一秒置换一次电平。

2. wiringPI库

wiringPI库的常用函数介绍请看这里

依次输入以下指令,安装一下库(仅适用于Raspbian):

sudo apt-get install wiringpi
mkdir WiringPI            #创建WiringPI文件夹
cd WiringPI #
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

如下图所示:
树莓派4B学习笔记(5)—— 来个GPIO操作吧_第2张图片
然后,执行gpio -v ,如果能看到GPIO版本信息,则安装成功。
树莓派4B学习笔记(5)—— 来个GPIO操作吧_第3张图片
然后执行gpio readall,可以查询到管脚信息。
树莓派4B学习笔记(5)—— 来个GPIO操作吧_第4张图片

(1)可视化编程方法

这种方法较为直接,在桌面新建c_test.c文件,双击打开,输入下面代码后保存。

#include 
#include 

int main(void)
{
     
	int LED = 0;
	wiringPiSetup();
	pinMode(LED, OUTPUT);  // 在wiringPi编号格式中,GPIO0编号为0
	printf("LED is blinking...\r\n");
	while(1)
	{
     
		printf("LED:%d is on \r\n", LED);
		digitalWrite(LED, HIGH);delay(1000);
		printf("LED:%d is off \r\n", LED);
		digitalWrite(LED, LOW);delay(1000);
	}
	return 0;
}

回到终端,依次输入:

gcc -o c_test c_test.c -lwiringPi   # 编译并生成可执行文件
./c_test    # 运行可执行文件

通过万用表测量电平,可以看到11号脚每秒置换一次电平。

-lwiringPi参数表示动态加载wiringPi共享库,丢失这个参数的话会报错。
终端中Ctrl + Z可以停止运行。

(2)命令行方法:

在终端依次输入:

touch c_test1.c
sudo nano c_test1.c

复制上面的C代码进去后保存。

格式会有点乱,但是不影响效果

然后继续输入:

gcc -o c_test c_test.c -lwiringPi
./c_test

通过万用表测量电平,可以看到11号脚每秒置换一次电平。

你可能感兴趣的:(树莓派4B学习笔记(5)—— 来个GPIO操作吧)