注:对于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引脚上连接一个开关来产生上升沿中断。另外,我们将打印在串行监视器窗口上发生中断的时间(以毫秒为单位)。
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());
}
输出窗口