目录
介绍
中断是在连续性流中随机发生的事件。这就像你忙于一些工作时的电话,根据电话优先级,你决定是参加还是忽视。
基于NodeMCU的ESP8266在其GPIO引脚上具有中断功能。此功能在NodeMCU Dev Kit的D0-D8引脚上可用。
我们可以在Kit的GPIO引脚上设置上升沿,下降沿,双沿,低电平和高电平中断模式。
我们需要使用以下函数初始化特定GPIO引脚的中断和中断模式。
gpio.mode()
该功能用于将引脚初始化为GPIO模式。
句法:
gpio.mode(pin, mode [, pullup])
参数:
- Pin:别针 配置。
- Mode: gpio.OUTPUT,gpio.OPENDRAIN,gpio.INPUT或gpio.INT(中断模式)之一
- Pullup: gpio.PULLUP使能弱上拉电阻。默认为gpio.FLOAT
返回: null
例:
gpio.mode(1, gpio.INT) -- Setting 1st (D1) pin as GPIO interrupt pin
gpio.trig()
此函数用于触发或清除回调函数,以便在特定引脚上发生中断时运行。仅当在编译时定义了GPIO_INTERRUPT_ENABLE时,此函数才可用。
句法:
gpio.trig(pin, [type [, callback_function]])
参数:
- Pin: 1-12引脚可用于中断触发。引脚0不支持中断。
- Type: “up”, “down”, “both”, “low”, “high”,分别代表上升沿,下降沿,两个边沿,低电平和高电平触发模式。如果类型为“none”或省略,则删除回调函数并禁用中断。
- callback_function(level, when):发生中断时调用的回调函数。中断时指定引脚的电平作为第一个参数传递给回调函数。事件的时间戳作为第二个参数传递。这是以微秒为单位,具有相同的基数tmr.now()。此时间戳在中断级别被抓取,并且比在回调函数中获得时间更加一致。如果省略该功能,将使用先前的回调函数。
返回: null
例
让我们编写一个Lua脚本来设置NodeMCU第二个GPIO引脚的上升沿中断。这里我们连接第二个GPIO引脚上的开关以产生上升沿中断。此外,我们将打印中断引脚上的电平和发生中断的时间(以微秒为单位)。
用于GPIO中断的Lua脚本
GPIO_PIN = 2
gpio.mode(GPIO_PIN,gpio.INT) -- Set GPIO interrupt mode for pin
function interrupt(level, stamp)-- callback function while interrupt
gpio.trig(GPIO_PIN) -- disable interrupt for that pin
tmr.delay(700000) -- wait 700 ms
print('level:',level) -- print level of on pin
print('stamp(us):',stamp) -- print timestamp while interrupt occur
print('interrupt on pin:', GPIO_PIN)--print interrupt pin no.
gpio.trig(GPIO_PIN,"up", interrupt)--re-enable interrupt on pin while exit
end
gpio.trig(GPIO_PIN,"up", interrupt)-- set interrupt type up i.e. rising edge
ESPlorer串行监视器窗口
本教程完整程序下载: