Arduino 外部中断

第一篇Arduino的日志啧啧。

中断的概念。

中断装置和中断处理程序统称为中断系统

我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。

在Arduino库中定义,UNO有两个中断,MEGA2560有六个中断。具体如下表,来自 http://arduino.cc/en/Reference/AttachInterrupt

image

DUE普及率非常一般,暂不涉及。

语法。

attachInterrupt(interrupt, function, mode)

变量使用。

1)interrupt:中断号,UNO只能使用 0或1 ,即代表D2 与D3口。

2)function:调用中断函数,中断发生时调用的函数。

3)mode:中断触发模式。

UNO R3 支持四种中断触发模式:

LOW 当针脚输入为低时,触发中断
CHANGE 当针脚输入发生改变时,触发中断
RISING 当针脚输入由低变高时,触发中断
FALLING 当针脚输入由高变低时,触发中断

 

中断函数不返回任何值。

中断函数的使用方法:

首先给出一段来自官方的例程:

复制代码
int pin = 13;          //首先我们需要找一个灯来观察
volatile int state = LOW;    //设置灯状态

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);    //设置触发,中断号0,即数字2口
}

void loop()
{
  digitalWrite(pin, state);        //对观察灯写入状态值
}

void blink()            //触发函数
{
  state = !state;            //将状态变量求反
}
复制代码

我们从中可以看出,使用中断函数时,不需要定义针脚状态,直接使用中断函数即可。

当我们需要取消中断时,我们有下面的命令。

detachInterrupt(interrupt)

interrupt 是中断号。执行此语句后,系统不会对中断有反应,即上例中,系统不会再对灯状态进行改变。

posted @   传说中的福利君  阅读(19693)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示