基础实验——外部中断

虽然能实现 IO 口输入输出功能,但代码是一直在检测 IO 输入口的变化,因此效率不高,特别是在一些特定的场合,比如某个按键,可能 1 天才按下一次去执行相关功能,这样我们就浪费大量时间来实时检测按键的情况。
为了解决这样的问题,我们引入外部中断概念,顾名思义,就是当按键被按下(产生中断)时,我们才去执行相关功能。中断的应用非常普遍,而 pyboard 上基本每个 IO 口都具备中断功能。


定义中断

板载中断按键可以理解成外接按键,用法如下
使用方法
调用外中断模块

from pyb import ExtInt

定义中断

from pyb import Pin, ExtInt

pyb.ExtInt(pin, mode, pull, callback)    #定义中断 
'''
pin 
	中断使用的GPIO,可以是pin对象或者已经定义GPIO的名称  
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
	回调函数 
'''

上升沿,下降沿

上升沿, 下降沿:上升沿等于是接通的瞬间给个瞬发信号,相当与通电信号。下降沿等于是断开的瞬间给个瞬发信号,相当与断电信号。
在这里插入图片描述
上升沿脉冲相当于你按开关,开关一接通的那一瞬间动作,之后就再也没有输入信号;下降沿脉冲则是一按了开关一松手,开关断开的那一瞬间动作,其他时间都没输入信号。

上,下拉电阻

上下拉电阻:上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。
上拉是对器件输入电流,下拉是输出电流;强弱只是上拉电阻的阻值不同,没有什么严格区分;对于非集电极(或漏极)开路输出型电路(如普通门电路)提供电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。

callback = lambda e: print("0")          #定义按键回调
函数说明
extint.disable()禁止中断
extint.enable()允许中断
extint.line()返回中断映射的行号
extint.swint()软件触发中断
ExtInt.regs()中断寄存器值
Created with Raphaël 2.2.0 导入 ExtInt、Pin、LED 模块 配置中断方式和定义回调函数 外部中断时候自动执行回调函数

例程:按钮控制LED

# main.py -- put your code here!


from pyb import Pin    #引入引脚
from pyb import ExtInt,LED #引入中断

#控制LED状态  toggle()翻转LED,状态是开,变为关;原来是关,变为开。
callback = lambda e: LED(2).toggle()    


#点击按钮返回
sw2  = ExtInt(Pin('X17'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback) 

外部中断的应用非常广,除了普通的按键输入和电平检测外,很大一部分输入设备,比如传感器也是通过外部中断方式来实时检测。我们后面会用到。本节就到这里

相关推荐
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页