0°

(五)ESPlorer系列:NodeMCU GPIO中断使用方法

介绍

中断是在连续性流中随机发生的事件。这就像你忙于一些工作时的电话,根据电话优先级,你决定是参加还是忽视。

基于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引脚上的开关以产生上升沿中断。此外,我们将打印中断引脚上的电平和发生中断的时间(以微秒为单位)。

(五)ESPlorer系列:NodeMCU 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系列:NodeMCU GPIO中断使用方法

ESPlorer串行监视器窗口

本教程完整程序下载:

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论