咸鱼Micropython—GPIO
GPIO的使用
GPIO(英语:General-purposeinput/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk ,generator, chip select等。
既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。
按键和LED其实就代表了GPIO的两种最基本的使用方法:输入和 输出,下面就完整地介绍GPIO的使用。
首先我们需要导入pyb中的Pin模块,然后就可以定义一个Pin对象, 及其使用的引脚和功能。
from pyb import Pin
cs = Pin(Pin.cpu.A0) #定义GPI
cs.init(Pin.OUT) #初始化GPIO
在 MicroPython中,可以用init()函数去设置Pin的功能,除了通用输出外,还可以设置推挽方式输出和开漏输出:
cs.init(Pin.OUT) #设置为通用输出
cs.init(Pin.OUT_PP) #设置为推挽方式输出
cs.init(Pin.OUT_OD) #设置为开漏方式输出
cs.init(Pin.IN) #设置输入
推挽输出,电子专业名词,一般出现在推挽放大器电路中,可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止
开漏输出,开漏电路概念中提到的"漏"就是指MOS FET的漏极。同理,开集电路中的"集"就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。
对于输入,还可以设置内部的上拉下拉电阻状态,比如设置上拉电 阻的方法是:
cs.init(Pin.IN,pull=PULL_UP) #设置输入,并使用内部上拉电阻
需要下拉电阻时设置pull参数为:pull=PULL_DOWN,而不需要上 拉下拉电阻时就设置pull=PULL_NONE。
上面是将 GPIO 的定义和模式分开设置的,这样比较好理解。但是 通常情况下,我们会将它们放在一起定义,这样更加简洁高效,
cs = Pin(Pin.cpu.A0,Pin.OUT_PP)
cs = Pin(Pin.cpu.A0,Pin.IN,pull=PULL_UP)
对于GPIO的输出,我们可以使用下面方法控制:
cs.high() #设置高电平
cs(1)
cs.low() #设置低电平
cs(0)
电子电路中高电平是电压高的状态,一般记为1
电子电路中低电平是电压低的状态,一般记为0
也可以使用value()函数设置输出电平:
cs.value(1) #设置高电平
cs.value(0) #设置低电平
对于GPIO的输入,可以直接读取:
cs()
或者使用不带参数的value()函数:
cs.value()
如果是高电平返回1,低电平返回0。