咸鱼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。