以下是一个简单的例子,演示如何在Arduino中使用外部硬件中断。假设我们想在按钮按下时触发中断:
const int buttonPin = 2; // 按钮连接到数字引脚2
volatile int buttonState = LOW; // 按钮状态,使用 volatile 修饰符表示该变量在中断中使用
void setup() {
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), interruptFunction, RISING);
Serial.begin(9600);
}
void loop() {
// 主循环中可以执行其他任务
}
void interruptFunction() {
// 中断服务程序
buttonState = !buttonState; // 切换按钮状态
Serial.println("Button pressed!");
Serial.print("Button state: ");
Serial.println(buttonState);
}
在上述例子中:
- attachInterrupt(digitalPinToInterrupt(buttonPin), interruptFunction, RISING); 用于将中断函数 interruptFunction 关联到按钮引脚,并设置触发条件为上升沿(按下按钮时引脚从LOW变为HIGH)。
- volatile 关键字用于告诉编译器,buttonState 变量可能在中断中被修改,因此编译器不应该对其进行优化。
请注意,中断服务程序应该尽可能短小,以允许系统尽快回到正常执行。在中断服务程序中,最好避免使用延时函数和复杂的操作。
这只是一个基本的例子,实际中断的应用可能更加复杂,取决于你的具体需求。如果你需要定时器中断等其他类型的中断,也可以使用类似的方法。
转载请注明出处:http://www.pingtaimeng.com/article/detail/10985/Arduino