Arduino - 8266 中断问题

在8266packages版本升级到2.5.2以上使用中断历程会出现复位


中断问题.png

翻译:
为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");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,248评论 6 13
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,941评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,877评论 0 10
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,482评论 0 9
  • 夜晚,老公关了灯,叫我过来,那看玻璃多好看啊,被雨点和灯光映衬,你拍试试。 一个清晨睁抬头看着天,这么蓝的天,不拍...
    杜娟0977阅读 148评论 0 1