目录
介绍
中断是在连续性工作中随机发生的事件。这就像你忙于一些工作时的电话,根据电话优先级,你决定是接听还是忽视。
基于NodeMCU的ESP8266在其GPIO引脚上具有中断功能。此功能在NodeMCU Dev Kit的D0-D8引脚上可用。
通过Arduino中断功能支持GPIO引脚中断,即attachInterrupt,detachInterrupt。
除D0 / GPIO16引脚外,可以将中断连接到任何GPIO引脚。支持标准Arduino中断类型,即CHANGE,RISING,FALLING。
NodeMCU的Arduino中断功能
让我们看看用于在Arduino IDE中为NodeMCU工具包设置中断的函数。
attachInterrupt()
该功能用于在指定引脚上附加中断。
句法: attachInterrupt(pin, ISR(callback function), interrupt type/mode);
参数:
pin
:要设置中断的引脚编号。ISR (callback function)
:中断发生时要调用的ISR; 此函数不接受任何参数并且不返回任何内容。Interrupt type/mode
:它定义何时应触发中断。
CHANGE:用于在引脚值改变时触发中断。
RISING:用于在引脚从低电平变为高电平时触发中断。
FALLING:用于在引脚从高电平变为低电平时触发中断。
返回: null
detachInterrupt()
该功能用于禁止指定GPIO引脚上的中断。
句法: detachInterrupt(pin)
参数:
pin
:要禁用的中断的GPIO引脚。
返回: null
例
让我们编写一个Arduino程序,在NodeMCU的第二个GPIO引脚上设置上升沿中断。在这里,我们连接第二个GPIO引脚上的开关,以在其上产生上升沿中断。此外,我们将打印串行监视器窗口中发生的中断的时间(以毫秒为单位)。
用于GPIO中断的Arduino程序
uint8_t GPIO_Pin = D2;
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}
void loop() {
}
余下程序: