M-Duino 21开发板I0_5中断引脚提示未声明编译报错问题求助
错误原因与修复方案
- 确认开发板配置正确
编译前必须在Arduino IDE中安装Industrial Shield官方的M-Duino系列板级支持包,且在「工具>开发板」选项中选中M-duino 21,普通Arduino核心未定义I0_5这类工业板专属引脚别名,选择错误就会触发未声明错误。 - 补充缺失的头文件
大部分版本的M-Duino板级支持包要求代码开头引入核心头文件,引脚别名宏全部定义在该文件内:
#include <Mduino.h>
- 备用替代方案
如果完成上述两步仍报错,可以直接用I0_5对应的物理引脚编号代替别名,M-duino 21的I0_5对应数字引脚编号为21,直接修改宏定义即可:
#define INTERRUPT 21
另外你当前代码遗漏了串口初始化逻辑,调用Serial.println前需要先初始化串口,否则不会有输出,修正后的完整代码如下:
// 使用引脚别名需引入该头文件 #include <Mduino.h> // 引脚定义二选一即可 #define INTERRUPT I0_5 // #define INTERRUPT 21 volatile bool state = false; void setup() { Serial.begin(9600); pinMode(INTERRUPT, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(INTERRUPT), function_call_back, CHANGE); } void loop() { if (state == true){ Serial.println("Interrupt activated"); state = false; } } void function_call_back(){ state = true; }
内容的提问来源于stack exchange,提问作者JTouchLogic
相关产品推荐
相关产品推荐

