Arduino - 中断(Interrupts)

Arduino - 中断(Interrupts) 首页 / Arduino入门教程 / Arduino - 中断(Interrupts)

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

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

链接:https://www.learnfk.comhttps://www.learnfk.com/arduino/arduino-interrupts.html

来源:LearnFk无涯教程网

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; //中断发生时切换状态
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

许式伟的架构课 -〔许式伟〕

消息队列高手课 -〔李玥〕

张汉东的Rust实战课 -〔张汉东〕

流程型组织15讲 -〔蒋伟良〕

Redis源码剖析与实战 -〔蒋德钧〕

如何讲好一堂课 -〔薛雨〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

手把手带你写一个MiniSpring -〔郭屹〕

超级访谈:对话道哥 -〔吴翰清(道哥)〕

好记忆不如烂笔头。留下您的足迹吧 :)