ESP8266外部按键中断最基本的例程
#include <Arduino.h>
IRAM_ATTR void keyHandler()
{
Serial.println("key press...");
}
void setup()
{
Serial.begin(115200);
pinMode(4, INPUT_PULLUP);
attachInterrupt(4, keyHandler, FALLING);
}
void loop()
{
}
关键点在于,回调函数keyHandler()前一定要加属性关键字IRAM_ATTR,即声明编译后的代码将放置在 ESP8266的内部 RAM (IRAM) 中。否则,代码将放在 Flash 中,闪存比内部 RAM 慢得多。
若不加IRAM_ATTR,ESP8266会直接死机,串口输出如下: