WiFi-ESP8266入门开发(十二)-使用GPIO中断

注:对于ESP8266开源技术感兴趣的可以加群,我们一起探索交流学习,群号:579932824。群名:ESP8266开源技术交流群。

介绍

中断是在连续性流程中随机发生的事件。这就像你忙于某些工作时的一个电话一样,根据电话的优先顺序决定是否参加或忽略它。

基于NodeMCU的ESP8266在其GPIO引脚上具有中断功能。该功能在NodeMCU Dev Kit的D0-D8引脚上可用。

GPIO引脚中断通过Arduino中断函数支持,例如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的第2个GPIO引脚上设置上升沿中断。这里我们在第二个GPIO引脚上连接一个开关来产生上升沿中断。另外,我们将打印在串行监视器窗口上发生中断的时间(以毫秒为单位)。

NodeMCU GPIO开关中断

Arduino程序-GPIO中断

uint8_t GPIO_Pin = D2;

void setup() {
 Serial.begin(9600);
 attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}

void loop() {
}

void IntCallback(){
 Serial.print("Stamp(ms): ");
 Serial.println(millis());
}

输出窗口

Arduino串行输出窗口


猜你喜欢

转载自blog.csdn.net/solar_Lan/article/details/79249123