📅  最后修改于: 2023-12-03 14:59:22.709000             🧑  作者: Mango
在计算机科学中,中断指的是计算机执行一个事件时暂停并转而执行另一个事件的行为。中断是计算机系统中的一种异步事件,它没有指定的时间表,也没有明确的开始和结束点。中断通知CPU在指定的时间内处理请求,以便不影响正在进行的活动。
在Arduino中,中断是一种事件处理机制,可以让我们实现程序运行时在预定义事件发生时采取行动的功能。中断处理器独立于主程序,当一个中断事件发生时,它会暂停主程序,并运行预定义的中断函数来处理该事件。完成处理后,中断处理器将控制权还给主程序,使其恢复执行。
Arduino支持两种类型的中断:
这是一个例子,在引脚2上附加一个下降沿中断,调用一个名为ISR()的中断函数:
int led = 13;
void setup() {
pinMode(2, INPUT);
pinMode(led, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), ISR, FALLING);
}
void loop() {
// 主程序
}
void ISR() {
// 处理中断的代码
}
这是一个例子,使用软件中断设置一个闹钟:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
if (millis() > 10000) { // 等待10秒钟
digitalWrite(led, HIGH); // 开启LED
delay(1000); // 延迟1秒钟
noInterrupts(); // 禁用中断
digitalWrite(led, LOW); // 关闭LED
delay(1000);
interrupts(); // 启动中断
}
}
中断为我们提供了一种强大的机制,可以在特定事件发生时立即执行代码。Arduino支持两种类型的中断:外部中断和软件中断。我们可以使用attachInterrupt()函数来初始化外部中断,并使用interrupts()和noInterrupts()函数来控制软件中断。