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)
每在引脚上发现一个下降沿,就会调用这一回调函数。注意:机械按钮有反弹,按下或松开开关通常会产生多个沿。
详细解释与消除抖动的具体方法,请参见: http://www.eng.utah.edu/~cs5780/debouncing.pdf for a detailed
在同一引脚上注册2个回调会引发异常。
若将引脚作为整数传递,则假定它映射到其中一个内部中断源,且须在16-22之间。
所有引脚对象通过引脚映射器来得到一个GPIO引脚。:
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, and pyb.ExtInt.EVT_RISING_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个参数,即触发中断的线。
Class methods¶
-
classmethod
ExtInt.
regs
() 转储EXTI寄存器的值。
方法¶
-
ExtInt.
disable
() 禁用与ExtInt对象关联的中断。这可能对消除抖动有关有帮助。
-
ExtInt.
enable
() 启用禁用的中断。
-
ExtInt.
line
() 返回引脚映射的行号。
-
ExtInt.
swint
() 从软件触发回调。