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

   日期:2021-03-12     浏览:268    评论:0    
核心提示:一. GPIO库介绍对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。python开发语言:python简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。wiring PI开发语言:C、C++简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiring Pi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。

一. GPIO库介绍

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

python

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

wiringPI

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

BCM2835

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

二. 引脚编号方式


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

如下图所示:

然后,执行gpio -v ,如果能看到GPIO版本信息,则安装成功。

然后执行gpio readall,可以查询到管脚信息。

(1)可视化编程方法

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

#include <stdio.h>
#include <wiringPi.h>

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号脚每秒置换一次电平。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服