diff --git a/machine/GPIO/README.md b/machine/GPIO/README.md index 497c6472f4f98acccc2aa2409fdadef24905711c..d0ce555ae7d21d6ed6074abec19f2e4f985dea45 100644 --- a/machine/GPIO/README.md +++ b/machine/GPIO/README.md @@ -274,9 +274,10 @@ ```python >>> from machine import Pin >>>Pin. -value GPIO IN OUT -PULL_DOWN PULL_MAX PULL_NONE PULL_UP -init off on +value GPIO IN INT_EDGE +INT_LEVEL IRQ_FALLING IRQ_RISING OUT +PULL_DOWN PULL_NONE PULL_UP init +irq off on pull ``` ### 宏定义 @@ -286,53 +287,65 @@ init off on | 宏定义 | 含义 | | ------------- | :--------------- | | Pin.GPIO | 作为GPIO接口 | -| Pin.IN | 信号输入 | | Pin.OUT | 信号输出 | +| Pin.IN | 信号输入 | | Pin.PULL_DOWN | 是否接入下拉电阻 | -| Pin.NONE | 无上拉、下拉电阻 | +| Pin.PULL_NONE | 无上拉、下拉电阻 | | Pin.PULL_UP | 是否接入上拉电阻 | +| Pin.INT_EDGE | 电平触发中断 | +| Pin.INT_LEVEL | 边沿触发中断 | +| Pin.IRQ_RISING | 上升沿触发 | +| Pin.IRQ_FALLING | 下降沿触发 | + -  注意:不是每个端口都有下面的全部属性。例如某些引脚只能输入不能输出 -  其中的 Pin.OUT 为信号输出,而 Pin(2, Pin.OUT) ,就是将GPIO2 设置为输出模式 +  其中的 Pin.OUT 为信号输出,而 Pin(2, Pin.OUT) ,就是将GPIO2 设置为输出模式。 ### 类 -  class machine.Pin(id[, mode[, func]]]) -  id :任意引脚号 -  mode :引脚模式 -- Pin.IN — 输入 -- Pin.OUT — 输出 -- None — 无上拉、下拉电阻 -- Pin.PULL_UP — 上拉电阻 -- Pin.PULL_DOWN — 下拉电阻 - func :引脚功能 -- Pin.GPIO ——GPIO +  class machine.Pin(id,mode,pull) +可传入参数: -### 定义Pin +- `id`:引脚号 +- `mode`:引脚模式 + - Pin.IN — 输入 + - Pin.OUT — 输出 +- `pull`:拉电阻模式 + - Pin.PULL_NONE — 无上拉、下拉电阻 + - Pin.PULL_UP — 上拉电阻 + - Pin.PULL_DOWN — 下拉电阻 + + +### 构造Pin   示例: ```python ->>> from machine import Pin ->>> ->>> gpio = Pin(2, Pin.OUT, func=Pin.GPIO) #将GPIO 2 设置为输出模式 +from machine import Pin +gpio = Pin(2, dir=Pin.OUT,pull=Pin.PULL_DOWN) #将GPIO 2 设置为输出模式,并且进入下拉模式 ``` + + ### 函数 -#### Pin.init([mode]) + +#### Pin.init(mode) +   函数说明:初始化引脚。 -  mode : + +  mode: + - Pin.IN — 输入 - Pin.OUT — 输出   示例: ```python ->>> from machine import Pin ->>> pin = Pin(2) ->>> pin.init(Pin.OUT) #也可以写作pin.init(Pin.OUT),初始化2号引脚的输出模式 +from machine import Pin +pin = Pin(2) +pin.init(Pin.OUT) #初始化2号引脚为输出模式 ``` -#### Pin.value([value]) +#### Pin.value(value) +   函数说明:获取或设置引脚电平状态,根据引脚的逻辑电平返回0或1。   注意:不带参数时是读取输出电平,带参数时是设置输出电平。 @@ -377,22 +390,55 @@ init off on >>>p9.value() ``` -## 示例 -  对waffle nano的一些GPIO引脚输入或输出模式进行设置,看其电压变化如何。 +#### Pin.pull(value) + +  函数说明:获取或设置引脚拉电阻状态,根据引脚的拉电阻状态返回0(无拉电阻)或1(上拉电阻)或2(下拉电阻)。 + +  注意:不带参数时是读取引脚拉电阻状态,带参数时是设置引脚拉电阻状态。 + +  value : + + - Pin.PULL_NONE + 0(无拉电阻) + - Pin.PULL_UP + 1(上拉电阻) + - Pin.PULL_DOWN + 2(下拉电阻) + +  示例: +```python +>>>p2=Pin(2,Pin.OUT) +>>>p2.pull(Pin.PULL_DOWN) #设置2号引脚为下拉状态 +>>>p2.pull() #查看此时引脚拉状态 +0 +``` + + +#### Pin.irq(callback, trigger, int_type) + +  函数说明:设置引脚中断 + +  参数说明:`callback`为中断触发函数,当检测到有中断被触发时将会运行此函数。`trigger`为中断触发条件,只有满足条件时中断才被触发。`int_type`为中断触发方式。 + +  参数值域: + + - callback + - 一般函数 + - trigger + - Pin.IRQ_RISING + - Pin.IRQ_FALLING + - int_type + - Pin.INT_EDGE + - Pin.INT_LEVEL + + +  示例: ```python -from machine import Pin -p9 = Pin(9, Pin.OUT) -p9.value(1) -p9.value(0) -print(p9.value()) -p2 = Pin(2, Pin.IN) -print(p2.value()) +from machine import Pin #导入Pin 库 +pin = Pin(0, dir=Pin.IN,pull=Pin.PULL_UP) #构造Pin对象,使其作用于0号引脚,将其设置为输入模式,并且设置为上拉状态 +def callback(p): #设置回调函数,每次检测到中断触发时所运行的函数,其中p为触发中断的Pin对象 + print('pin change: ', p) +ret = pin.irq(callback, trigger=Pin.IRQ_RISING, int_type=Pin.INT_EDGE) #将pin设置为一个上升沿触发的中断,其触发方式是电平触发中断,能检测pin对应的实际物理引脚的电平状态的突变。 + ``` -- 第一行导入 machine 模块的硬件类 Pin -- 第二行把waffle nano默认的GPIO 9号引脚设置为输出模式 -- 第三行把GPIO 9号引脚输出电压设置为高电压1 -- 第五行把GPIO 9号引脚输出电压设置为低电压0 -- 所以打印出的GPIO 9号引脚输出电压为低电压0 -- 第七行把waffle nano默认的GPIO 2号引脚设置为输入模式 -- 打印出的GPIO 2号引脚输入电压使用 from machine import Pin 导入 machine \ No newline at end of file