Arduino 中断

2025年3月17日 | 阅读 3 分钟

Arduino 中的 interrupts() 允许在后台执行某些基本任务,默认情况下这些任务是启用的。

禁用 interrupts() 可能会干扰 Arduino 功能,并可能影响通信。这意味着如果禁用 interrupts(),Arduino 中的某些功能将无法工作。

中断有时会干扰代码时序。 为了防止此类干扰,可以在代码的关键部分禁用中断。

语法是

让我们通过一个例子来理解。

请看下面的代码

Interrupts() 的特点

interrupts() 的特点如下

  • 它可以节省时序问题。
  • 它包括读取旋转编码器或监控用户输入。
  • 它可以释放处理器以获取其他内容,而不会错过输入。
  • 它有助于系统快速有效地做出反应。

外部中断

外部中断如下

  • attachInterrupt()
  • detachInterrupt()

attachInterrupt()

设置中断的第一个函数是:attachInterrupt( )

我们需要使用 digitalPinToInterrupt(pin) 将实际数字引脚转换为中断号(指定的数字)。

例如:

如果我们要将其连接到引脚号 5,我们需要使用以下参数:

它是传递给 attachInterrupt() 的第一个参数。

可用于中断的数字引脚

让我们讨论一些用于各种 Arduino 板的数字引脚,这些引脚可用于中断。

  • Arduino UNO、Mini 或 Nano

PIN- 2, 3

对于基于 328 微控制器的所有板,引脚号将相似。

  • Arduino Mega ADK、Mega 2560 或 Mega

PIN- 2, 3, 18, 19, 20, 21

  • Arduino Zero

它包括所有数字引脚,除了引脚号 4。

  • Arduino MKR 系列板

PIN- 0, 1, 4, 5, 6, 7, 8, 9, A1, A2

  • Arduino Due

它包括所有可用作中断的数字引脚。

注意:在附加函数中修改的变量应声明为 volatile。
在这里,delay( ) 函数在附加函数内部不起作用。 它需要中断才能工作。

语法是

以上语法是强烈推荐的。

不推荐使用的语法是

适用于 Due、Uno WiFi Rev2、Arduino SAMD Boards 和 101 的语法是

其中,

interrupt:它包括中断的编号。

此处使用的数据类型为 int

pin:它包括 Arduino 开发板的指定引脚号。

mode:它决定了 Arduino 中何时触发中断。

ISR:它代表 Interrupt Service Routine。 当中断出现时调用它。 它不包含任何参数。

有四种模式或常量,如下所示

  • LOW

当指定的引脚为低电平时,用于触发中断。

  • FALLING

当指定的引脚从高电平变为低电平时,用于触发中断。

  • CHANGE

当指定的引脚更改值时,用于触发中断。

  • RISING

当指定的引脚从低电平变为高电平时,用于触发中断。

Code Example

让我们通过一个例子来理解。

请看下面的代码

detachInterrupt()

detachInterrupt( ) 用于关闭给定的或当前的中断。

语法是

以上语法可能是推荐的。

不推荐使用的语法是

适用于 DueUno WiFi Rev2、Arduino SAMD Boards 和 101 的语法是

其中,

interrupt:它包括我们要禁用的中断的编号。

pin:它是 Arduino 开发板的引脚号,用于禁用中断。


下一个主题Arduino SPI