Arduino & IoT Academy · 课时

轮询与中断

了解为什么有些事件不能等到循环执行

第 1 / 4 课13 个步骤

轮询与中断 是 CoddyKit 上的免费 Arduino & IoT Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Arduino & IoT Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Arduino & IoT Academy 课程共包含 4 节课。

持续检查

到目前为止,您的循环使用的是轮询:循环不断运行,反复询问每个传感器和按钮是否发生了变化。

轮询的实际运行

一次典型的轮询会在循环的每一轮读取一个引脚。如果读到的值符合预期,您就做出响应;否则就继续循环。🔁

if (digitalRead(buttonPin) == LOW) {
  doSomething();
}

隐藏的代价

轮询确实有效,但当一切没有变化时,反复询问就是在浪费资源。开发板会不断检查一个长时间保持不变的引脚,消耗处理周期。

当循环正忙时

如果一个缓慢的任务或较长的延迟阻塞了循环,那么一次快速的按下动作可能在您再次读取引脚之前就已经发生并结束了。

不能等待的事件

有些信号既快速又短暂:传感器尖峰、编码器边沿或短脉冲。一旦错过那一刻,事件就永远消失了。

更聪明的方法

中断改变了这种模式:不再由您主动询问,而是由硬件在引脚上发生变化的瞬间提醒您。

暂时放下一切

中断触发时,芯片会暂停循环正在执行的内容,运行您的处理函数,然后准确返回到刚才暂停的位置。⚡

不再错过瞬间

由于硬件会替您监视引脚,即使是极短的脉冲也能触发您的代码。这样,慢速循环可能错过的事件也能被捕获。

为循环减负

由中断处理紧急信号后,您的循环会保持简洁且响应迅速,可以自由执行较慢的工作,而不必持续检查。

适合使用轮询的情况

并非所有事情都需要中断。对于人类缓慢按下的按钮,轮询更简单,也完全够用。

选择合适的工具

当事件快速、短暂,或可能在循环繁忙时到达,请使用中断。其他情况下,轮询可以让事情更简单。

快速检查

在什么情况下,选择中断而不是轮询最合适?

回顾

您已经看到,轮询会不断询问,而中断会主动通知您。快速事件使用中断,宽松的事件使用轮询。🎉

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「轮询与中断」课时是免费的吗?

是的 — 「轮询与中断」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Arduino & IoT Academy 课程的其余内容,请升级到 CoddyKit PRO。 Arduino & IoT Academy 课程共包含 4 节课。

「轮询与中断」这节课中我会学到什么?

了解为什么有些事件不能等到循环执行 你通过在浏览器中直接运行的动手代码来练习 Arduino & IoT Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Arduino & IoT Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Arduino & IoT Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「轮询与中断」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Arduino & IoT Academy 课中编写并运行代码吗?

能。每节 Arduino & IoT Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 轮询与中断
  2. 在引脚上使用 attachInterrupt
  3. 编写安全的 ISR
  4. 计算编码器脉冲
← 返回 Arduino & IoT Academy