class ExtInt – 配置I/O引脚根据外部事件生成中断

configure I/O pins to interrupt on external events

OpenMV总有22条中断线程. 其中16条可以用于配置来自GPIO管脚的中断, 预留了6条来响应内部中断.

For lines 0 thru 15, a given line can map to the corresponding line from an arbitrary port. So line 0 can map to Px0 where x is A, B, C, ... and line 1 can map to Px1 where x is A, B, C, ...

注意 ExtInt外部中断 指定引脚, 默认设定为Input模式

pyb.ExtInt.IRQ_FALLING : 下降沿触发 pyb.Pin.PULL_UP 引脚 上拉电阻 callback 回调函数

# 回调函数
def callback(line):
      #打印线程信息 
    print("line =", line)

extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)

每次引脚产生下降沿的时候, 都会触发外部中断

注意: 机械按钮, 按下的时候, 会产生抖动, 产生多个下降沿/上升沿, 造成扰乱. 产生抖动原因以及消抖的资料

尝试给同一个引脚, 注册两个回调函数, 会触发错误. 如果pin传入的是一个数值, 必须要确保对应的引脚有中断资源 有效取值范围为 16至22

# All other pin objects go through the pin mapper to come up with one of the gpio pins.
extint = pyb.ExtInt(pin, mode, pull, callback)

有效的模式有

TODO IRQ vs EVT

模式 解释
pyb.ExtInt.IRQ_RISING 上升沿
pyb.ExtInt.IRQ_FALLING 下降沿
pyb.ExtInt.IRQ_RISING_FALLING 上升沿或者下降沿
Only the IRQ_xxx modes have been tested. The EVT_xxx modes have something to do with sleep mode and the WFE instruction.

Valid pull values are pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN, pyb.Pin.PULL_NONE.

There is also a C API, so that drivers which require EXTI interrupt lines can also use this code. See extint.h for the available functions and usrsw.h for an example of using this.

Constructor

class pyb.ExtInt(pin, mode, pull, callback)

创建一个ExtInt对象

@param pin

引脚 (可以允许中断的引脚)

TODO 可以进行中断的引脚列表, 对应硬件资源图

可以传入pin对象, 或者是 pin的名称

@param mode

模式, 具体详情参照 constants的描述

ExtInt.IRQ_FALLING , ExtInt.IRQ_RISING , ExtInt.IRQ_RISING_FALLING

@param pull

拉电阻, 上拉/下来

  • pyb.Pin.PULL_NONE 没有上拉/下拉电阻
  • pyb.Pin.PULL_UP 允许上拉电阻
  • pyb.Pin.PULL_DOWN 允许下拉电阻

@param callback

回调函数 (触发器触发时, 执行的函数)

callback的参数有且只能有一个,line.

callback(line)

line是触发中断的线程.

Class Methods

ExtInt.regs()

TODO EXTI

Dump the values of the EXTI registers.

Methods

extint.disable()

禁止ExtInt对象触发中断事件.

在用于消抖时比较有用.

extint.enable()

允许被禁止的中断

extint.line()

返回引脚映射的线程数(线程ID)

extint.swint()

触发回调函数, 软件方式中断

Constants

ExtInt.IRQ_FALLING

下降沿触发

ExtInt.IRQ_RISING

上升沿触发

ExtInt.IRQ_RISING_FALLING

上升沿/下降沿触发

TODO

上升沿 下降沿的图示 概念解释

IRQ讲解

Copyright 杭州云江科技有限公司 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-04-02 09:53:12

results matching ""

    No results matching ""