Arduino 外部中断
第一篇Arduino的日志啧啧。
中断的概念。
我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。
在Arduino库中定义,UNO有两个中断,MEGA2560有六个中断。具体如下表,来自 http://arduino.cc/en/Reference/AttachInterrupt
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 是中断号。执行此语句后,系统不会对中断有反应,即上例中,系统不会再对灯状态进行改变。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库