ESP8266 arduino nodemcu1.0开发板 使用中断函数attachInterrupt会重启-Arduino中文社区 - Powered by Discuz! Archiver

jianfengbeyond 发表于 2020-7-7 11:54

ESP8266 arduino nodemcu1.0开发板 使用中断函数attachInterrupt会重启

ESP8266 arduino nodemcu1.0开发板 使用中断函数attachInterrupt会重启现象表现为:一旦运行中断代码就重启


pinMode(D4, INPUT_PULLUP);
attachInterrupt(D4, lowInterrupt, FALLING);



ICACHE_RAM_ATTRvoid lowInterrupt()
{
//关门时用到的位置传感器外部中断函数-------------------------------------

}




8266_package_2.6.3
8266_package_2.7.1
都试过,依然重启
ICACHE_RAM_ATTR 也有添加,和没添加也试过依然不行。


也参考过这个帖子,但是没试过用回2.5.0版本,因为需要用blinker 物联网,要用2.6.x版本。

https://www.arduino.cn/forum.php?mod=viewthread&tid=90869&fromuid=217681



奈何col 发表于 2020-7-7 12:37

blinker lib dev3.0分支支持2.7.1 package

奈何col 发表于 2020-7-7 13:35

官方文档关于中断的介绍:
https://arduino-esp8266.readthedocs.io/en/latest/reference.html#interrupts

jianfengbeyond 发表于 2020-7-7 14:18

奈何col 发表于 2020-7-7 12:37
blinker lib dev3.0分支支持2.7.1 package

奈何大佬,试了用你说的这个分支和2.7.1 package,测试结果依然是会执行中断就重启

奈何col 发表于 2020-7-7 17:29

jianfengbeyond 发表于 2020-7-7 14:18
奈何大佬,试了用你说的这个分支和2.7.1 package,测试结果依然是会执行中断就重启
...

看看官方文档,确认下中断中没有其他提到的问题

17865566707 发表于 2020-7-9 13:38

你好楼主,最近我也遇到了这个问题,请问你找到问题所在了吗?解决了吗?

jianfengbeyond 发表于 2020-7-14 10:21

17865566707 发表于 2020-7-9 13:38
你好楼主,最近我也遇到了这个问题,请问你找到问题所在了吗?解决了吗? ...

无解决,我用while临时解决,缺点是占用CPU资源。你可以试试退回2.5.0版本试试,我没试过。
while ( now_time < old_time + 5000 )   //循环执行最长5000毫秒
    {
      kk = digitalRead(D4);      //把左门位置D4引脚的电平高低值赋予kk
      if (kk == LOW)
      {
      digitalWrite(D2, LOW);    //左门关闭停止
      digitalWrite(D7, LOW);    //关闭地锁电机
      analogWrite(D8, 512);   //开启地锁电机反转,加快落地锁。 50%功率输出是因为电机为3V电机用在了12V电压,降低输出功率保护驱动IC和电机。
      Blinker.delay(300);       //0.3秒落锁时间
      break;                  //跳出结束whinle循环
      }

顺便提一下,blinker lib dev3.0分支支持2.7.1 package,用blinker获取网络时间也会导致重启

17865566707 发表于 2020-7-17 17:56

jianfengbeyond 发表于 2020-7-14 10:21
无解决,我用while临时解决,缺点是占用CPU资源。你可以试试退回2.5.0版本试试,我没试过。
while ( now_ ...

我的ESP-01S,2.7.1,3.0可以正常中断了

jianfengbeyond 发表于 2020-7-22 17:11

17865566707 发表于 2020-7-17 17:56
我的ESP-01S,2.7.1,3.0可以正常中断了

目前怀疑是中断按键没有使用电容消抖的原因,导致中断短时间重复执行,呛死了单片机,因为我用STM32使用中断试过这个情况

shouji6406 发表于 2020-9-7 17:07

按照https://zhuanlan.zhihu.com/p/87324730

终于能用了
页: [1] 2
查看完整版本: ESP8266 arduino nodemcu1.0开发板 使用中断函数attachInterrupt会重启