树莓派学习系列7——GPIO基础

来源:互联网 发布:屋顶光伏支架技术数据 编辑:程序博客网 时间:2024/06/18 15:58

前言

原来学单片机的时候,就是通过一系列的引脚来控制单片机。终于学到了通过引脚来控制树莓派了。话不多说咱们先来了解基础。


GPIO简介

a.全称

General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器.

b.特性

GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)

c.功能

与电脑内部进行数据交互(传感器的数据处理;步进电机等)

d.硬件

GPxCON 控制引脚功能;GPxDAT用于读写引脚数据。另外,GPxUP用于确定是否使用上拉电阻。 x为A,B,,H/J。


1. GPxCON 寄存器
用于配置引脚功能。 

PORT A 与 PORT B~PORT H/J 在功能选择上有所不同,GPACON 中每一位对应一根引脚,共 23 个引脚。当某位被设为 0 时候,相应引脚为 输出引脚。此时我们可以在GPADAT 中相应的写入 1或者 0 来让此引脚输出高电平或者低电平;当某位被设为1时,相应引脚为地址线或用于地址控制,此时GPADATA无用。
一般而言 GPACON 通常被设为 1 ,以便访问外部器件。
PORT B~PORT H/J
在寄存器操作方面完全相同,GPxCON 中每两位控制一根引脚,
00 输入 01 输出
10 特殊功能 11 保留不用


2. GPxDAT 寄存器

GPxDAT用于读写引脚,当引脚被设为输入时候,读此寄存器可知道相应引脚的电平状态高还是低,当引脚被设为输出时候,写此寄存器的位,可令引脚输出高电平还是低电平。


3. GPxUP寄存器

GPxUP寄存器某位为1时,相应管脚没有内部上拉电阻;为 0 时候 相应管脚有内部上拉电阻。
上拉电阻作用在于,当GPIO 引脚处于第三种状态时候,既不是输出高电平,也不是输出低电平。而是呈现高阻态,相当于没有接芯片。它的电平状态由上下拉电阻决定。


GPIO编程

1.GPIO库及语言

a.RPi.GPIO------python库

支持Board Pin和BCM GPIO两种编号

b.wiringPi-------C库

支持wiringPi Pin和BCM GPIO两种编号


2.编号规范


a.树莓派主芯片提供商Broadcom的编号方法

GPIO12对应的序号就是12,即GPIOx对应序号x。

b.树莓派板子上的自然编号(BOARD)

图上灰色 对应的编号,比如GPIO12对应的编号是32。

c.wiringPi编号方式

这个图一没有这一列,图二网上随便一个图。有一列专门对应该编号方式的编号,找到板子上想要控制的GPIO再对应该编号方式的编号即可。如:GPIO25对应编号就是25。


编程步骤

1.python

安装:sudo apt-get install python-RPi.GPIO

检测:

sudo python

import RPi.GPIO as GPIO

GPIO.RPI_REVISION


import RPi.GPIO as GPIO     //导入库/*设置GPIO的编号方式*/GPIO.setmode(GPIO.BCM)    //设置GPIO的编号方式为BCM/*设置GPIO引脚号及对应的工作方式*/GPIO.setup(24,GPIO.OUT)     //设置GPIO24为输出模式/*接下来编写你想要进行的操作*/


2.C语言wiringPi

安装通过GIT获得wiringPi的源代码

git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
build脚本会帮助你编译和安装wiringPi
检测
gpio -v
gpio -readall



简单灯闪烁程序:

#include <wiringPi.h>       //添加GPIO库int main(){wiringPiSetup();     //初始化wiringPipinMode(1,OUTPUT);   //void pinMode(int pin,int mode) 引脚+模式while(1){digitalWrite(1,HIGH);   //1号口写高电平delay(500);//延迟500msdigitalWrite(1,LOW);delay(500);}return 0;}


硬件准备

1.杜邦线

2.面包板



面包板的特点:+号和-号是一竖条都是接通的

中间的都是一排是接通的。中间的分隔也是分隔的

(可以自己实践一下确认)


1 0