在8266packages版本升级到2.5.2以上使用中断历程会出现复位
翻译:
为ESP8266做ISR的正确方法是将它放在IRAM中 - 而不是让它从闪存中执行。第二种选择大部分时间都可以工作,但是不可靠,几年前我发现这很困难 我偶尔会发生ISR崩溃。添加ICACHE_RAM_ATTR解决了这个问题:它将ISR置于IRAM中,不再发生随机崩溃。
2.5.2以前版本可用历程
uint8_t GPIO_Pin = D2;
void setup() {
Serial.begin(115200);
attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}
void loop() {
delay(500);
}
void IntCallback(){
Serial.println("123456");
2.5.2以后版本需要增加 ICACHE_RAM_ATTR标识 例:
uint8_t GPIO_Pin = D2;
void ICACHE_RAM_ATTR IntCallback();
void setup() {
Serial.begin(115200);
attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}
void loop() {
delay(500);
}
void IntCallback(){
Serial.println("123456");