类 ExtInt – 配置 I/O 引脚以在外部事件上中断¶
共有22条中断线。其中 16 个可以来自 GPIO 引脚,其余 6 个来自内部来源。
对于第 0 行到第 15 行,给定的行可以从任意端口映射到相应的行。因此,第 0 行可以映射到 Px0,其中 x 是 A、B、C……,第 1 行可以映射到 Px1,其中 x 是 A、B、C……
def callback(line):
print("line =", line)
注意:ExtInt 会自动将 gpio 线路配置为输入。
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
现在每次在 X1 引脚上看到下降沿时,都会调用回调。注意:机械按钮具有“弹跳”功能,按下或松开开关通常会产生多个边沿。请参阅:http://www.eng.utah.edu/~cs5780/debouncing.pdf了解详细说明以及各种去抖动技术。
尝试将 2 个回调注册到同一引脚上将引发异常。
如果 pin 作为整数传递,则假定它映射到内部中断源之一,并且必须在 16 到 22 的范围内。
所有其他 pin 对象都通过 pin mapper 来产生一个 gpio pin。
extint = pyb.ExtInt(pin, mode, pull, callback)
有效模式是 pyb.ExtInt.IRQ_RISING、pyb.ExtInt.IRQ_FALLING、pyb.ExtInt.IRQ_RISING_FALLING、pyb.ExtInt.EVT_RISING、pyb.ExtInt.EVT_FALLING 和 pyb.ExtInt.EVT_FALLING
只测试了 IRQ_xxx 模式。EVT_xxx 模式与睡眠模式和 WFE 指令有关。
有效的拉取值为 pyb.Pin.PULL_UP、pyb.Pin.PULL_DOWN、pyb.Pin.PULL_NONE。
还有一个 C API,因此需要 EXTI 中断线的驱动程序也可以使用此代码。有关可用函数的信息,请参见 extint.h,有关使用此功能的示例,请参见 usrsw.h。
构造函数¶
-
class
pyb.
ExtInt
(pin, mode, pull, callback)¶ 创建一个 ExtInt 对象:
pin
是启用中断的引脚(可以是引脚对象或任何有效的引脚名称)。mode
可以是以下之一: -ExtInt.IRQ_RISING
- 在上升沿触发; -ExtInt.IRQ_FALLING
- 在下降沿触发; -ExtInt.IRQ_RISING_FALLING
- 在上升沿或下降沿触发。pull
可以是以下之一: -pyb.Pin.PULL_NONE
- 无上拉或下拉电阻器; -pyb.Pin.PULL_UP
- 使能上拉电阻; -pyb.Pin.PULL_DOWN
- 启用下拉电阻。callback
是中断触发时调用的函数。回调函数必须恰好接受 1 个参数,即触发中断的行。