Arduino - 中断

首页 / Arduino / Interrupts

中断Interrupts会停止Arduino当前的工作,以便可以完成其他工作。

主程序正在运行并在电路中执行某些函数,但是,当发生中断时,主程序将暂停,同时执行另一个例程,该例程完成后,处理器将再次返回主例程。

Interrupt

中断类型

有两种类型的中断-

无涯教程网

  • 硬件中断  -  它们是响应外部事件而发生的,例如外部中断引脚变高或变低。

  • 软件中断  -  它们是响应软件中发送的指令而发生的,支持的唯一中断类型是attachInterrupt()函数。

使用中断

中断在Arduino程序中非常有用,因为它有助于解决时序问题,中断的一个很好的应用是读取旋转编码器或观察用户输入。

通常,全局变量用于在ISR和主程序之间传递数据,为了确保正确更新ISR和主程序之间共享的变量,请将其声明为volatile

attachInterrupt 语法

attachInterrupt(digitalPinToInterrupt(pin),ISR,mode);//推荐用于arduino板
attachInterrupt(pin, ISR, mode) ; //推荐 Arduino Due
//参数 pin:pin 号
//参数 ISR:中断发生时要调用的 ISR;
   //此函数必须不带任何参数且不返回任何内容。
   //该函数有时被称为中断服务程序.
//参数模式:定义何时应触发中断。

以下三个常量已预定义为有效值-

  • LOW           -  每当引脚为低电平时触发中断。

  • CHANGE   -  以在引脚更改值时触发中断。

  • Falling        -  每当引脚从高电平变为低电平时,

int pin=2; //将中断引脚定义为 2
volatile int state=LOW; //确保 ISR 之间共享变量
//主程序已正确更新,将它们声明为 volatile。

void setup() {
   pinMode(13, OUTPUT); //将引脚 13 设置为输出
   attachInterrupt(digitalPinToInterrupt(pin), blink, CHANGE);
   //当引脚更改值时,引脚 2 处的中断闪烁 ISR
} 
void loop() { 
   digitalWrite(13, state); //引脚 13 等于状态值
} 

void blink() { 
   //中断服务功能
   state=!state; //中断发生时切换状态
}

这一章《Arduino - 中断》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

后端技术面试38讲 -〔李智慧 - 46讲〕

编译原理实战课 -〔宫文学 - 55讲〕

分布式数据库30讲 -〔王磊 - 34讲〕

遗留系统现代化实战 -〔姚琪琳 - 25讲〕

由于非私有方法未覆盖或实现超类型中的方法,因此无法使用“<>”

如何系统地使用软件预取?

React 18,useEffect 被调用了两次

在 android-billing-5.0 中获取 ProductDetails 价格

从 SQL 中的左连接和内连接中减去计数

升级到 android studio 花栗鼠后,应用程序未安装在模拟器中

视频推荐〔Arduino - 1-19 mc猜数字 - 1 电路搭建〕

更多视频 »
好记忆不如烂笔头。留下你的足迹吧 :)