单片机世界探秘:07 紧急事件处理专家——中断系统大会!

张开发
2026/4/11 3:29:09 15 分钟阅读

分享文章

单片机世界探秘:07 紧急事件处理专家——中断系统大会!
07紧急事件处理专家——中断系统大会!今天单片机界最高级别“急诊科”开张!想象一下:你正悠闲地在loop()里逛街,突然按钮“啪”一声按下……普通程序还得慢慢检查(轮询),但中断直接给CPU打电话:“老板!有急事!先放下手头活!”CPU立刻冲过去处理,完事秒回来继续逛——这才是专业玩家的“时间管理大师”!😂今天带你从零到英雄:外部中断 + 定时器中断 + 引脚变化中断全家桶,最后还有按钮+串口双中断抢答器仿真,抢答快到对手怀疑人生!一、中断 vs 轮询(先来吐槽大会)轮询(polling):CPU像个保安,每秒巡逻1000次问“按钮按了吗?按了吗?按了吗?”——浪费电、卡顿、响应慢。中断(Interrupt):按钮自己喊“救命!”,CPU立刻放下一切冲过去——省电、响应快、支持多任务!神级对比表(贴屏幕!):项目轮询(保安模式)中断(110模式)CPU占用一直忙到冒烟平时睡觉,有事才醒响应速度取决于loop多慢微秒级,闪电般快适合场景简单教学机器人、抢答器、智能家居代码优雅度简单但丑优雅但要懂volatile比喻:轮询是你妈每5秒问你“作业写完了吗?”;中断是你考试突然铃响,老师立刻冲过来收卷!二、三大中断类型详解(原理+接线+代码)1. 外部中断(External Interrupt)——最常用“急救按钮”Arduino Uno只有2个(D2/D3),ESP32随便挑,STM32超多!attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)mode:RISING(上升沿)、FALLING(下降沿)、CHANGE(任意)、LOW(低电平)接线神图(按钮接GND,用INPUT_PULLUP):代码示例(按钮中断翻转LED + 串口报数):volatileintcount=0;// 必须volatile!中断和主程序共享voidIRAM_ATTRhandleButton(){// ESP32要加IRAM_ATTRcount++;digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));Serial.println(

更多文章