当前位置:首页 > 编程笔记 > 正文
已解决

ESP8266之中断反复重启问题解决

来自网友在路上 177877提问 提问时间:2023-11-05 08:44:31阅读次数: 77

最佳答案 问答题库778位专家为你答疑解惑

在ESP8266的中断学习中,出现单片机不断重启的情况。其原因是没有使中断回调函数位于IRAM。因此在中断处理函数前加入ICACHE_RAM_ATTR 用于定义其属性为IRAM中方可解决此问题。


IRAM:internal ram 内部RAM,指的是集成到SoC内部的RAM

将D4设置为上升沿出发中断代码示例-基于VSCODE的Arduino环境

#include <Arduino.h>uint8_t count1 = 0;void interrupt4(void);  //函数声明void setup(void)  //初始化函数
{pinMode(D4,INPUT);    //D4模式设置attachInterrupt(D4,interrupt4,RISING);  //设置为上升沿中断pinMode(LED_BUILTIN,OUTPUT);  //灯脚设置为输出digitalWrite(LED_BUILTIN,HIGH);  //初始化为高电平,熄灭
}void loop(void)  //循环
{if(count1 == 5){digitalWrite(LED_BUILTIN,LOW);}else if(count1 == 10){digitalWrite(LED_BUILTIN,HIGH);}
}ICACHE_RAM_ATTR void interrupt4()  //中断函数
{count1++;if(count1>10){count1=0;digitalWrite(LED_BUILTIN,HIGH);}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"ESP8266之中断反复重启问题解决":http://eshow365.cn/6-32571-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!