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
blinker lib dev3.0分支支持2.7.1 package 官方文档关于中断的介绍:
https://arduino-esp8266.readthedocs.io/en/latest/reference.html#interrupts 奈何col 发表于 2020-7-7 12:37
blinker lib dev3.0分支支持2.7.1 package
奈何大佬,试了用你说的这个分支和2.7.1 package,测试结果依然是会执行中断就重启
jianfengbeyond 发表于 2020-7-7 14:18
奈何大佬,试了用你说的这个分支和2.7.1 package,测试结果依然是会执行中断就重启
...
看看官方文档,确认下中断中没有其他提到的问题 你好楼主,最近我也遇到了这个问题,请问你找到问题所在了吗?解决了吗? 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获取网络时间也会导致重启 jianfengbeyond 发表于 2020-7-14 10:21
无解决,我用while临时解决,缺点是占用CPU资源。你可以试试退回2.5.0版本试试,我没试过。
while ( now_ ...
我的ESP-01S,2.7.1,3.0可以正常中断了 17865566707 发表于 2020-7-17 17:56
我的ESP-01S,2.7.1,3.0可以正常中断了
目前怀疑是中断按键没有使用电容消抖的原因,导致中断短时间重复执行,呛死了单片机,因为我用STM32使用中断试过这个情况 按照https://zhuanlan.zhihu.com/p/87324730
终于能用了
页:
[1]
2