ESP8266外部按键中断最基本的例程及IRAM_ATTR属性

ESP8266外部按键中断最基本的例程

#include 

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会直接死机,串口输出如下:
ESP8266外部按键中断最基本的例程及IRAM_ATTR属性_第1张图片

你可能感兴趣的:(ESP8266,ESP32,PlatformIO,嵌入式)