0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式3---单片机中断

jf_49463572 来源:27熊熊嵌入式 作者:27熊熊嵌入式 2026-05-06 09:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、中断是什么?

中断CPU 正常执行程序时,外部 / 内部事件触发信号,让 CPU 暂停当前任务,立刻去处理紧急事件,处理完再回到原来的位置继续执行。

二、中断向量表 中断向量表 = 存放所有中断服务函数(ISR)入口地址的一张表

放在 MCU 固定的 Flash 地址(通常是 0x00000000 开始)

每个中断对应一个向量(一个函数指针)

中断触发时,硬件自动查表跳转到对应 ISR

三、中断优先级 当多个中断触发时优先级高的先执行,高抢占优先级会抢占低抢占优先级的cpu资源 在单片机里有两个优先级 1.抢占优先级(Preemption) 高抢占优先级可以打断低抢占优先级 2.子优先级(Subpriority) 抢占优先级相同时,子优先级高的先执行,不能互相打断 3.规则

高抢占优先级 > 低抢占优先级

同抢占优先级:子优先级高先执行

同优先级:硬件固定的序号小的先执行

4. 工程经验

紧急事件(如故障、编码器):高抢占优先级

普通通信(串口、CAN):中等

定时任务、LED低优先级

四、中断响应流程 中断触发之后的经过 1.完成当前指令 2.保护现场:将当前的CPU寄存器、PC指针压入栈中 3.查找中断向量表:找到对应的服务函数地址 4.执行中断服务函数 5.恢复现场:出栈,回到主程序断点继续执行 五、ISR 中断服务函数编写注意事项 1.快进快出 中断服务函数尽量做到短、快、简单,避免使用耗时函数,如延时,大量循环,打印log等 2.可重入 函数打断后,可以再继续回来执行不会出错 最好不使用全局或者静态变量,不调用不可重入函数(printf,malloc等) 使用全局变量最好做volatile声明 3.共享资源保护 多个中断或者和主程序公用变量时做共享资源保护 如开关中断

// 临界区保护__disable_irq();共享变量 =1;__enable_irq();
4.必须清楚中断标志位 六、总结

中断向量表

存放中断服务函数入口地址的表

硬件自动查表跳转

中断优先级

抢占优先级:决定是否可以嵌套

子优先级:同抢占优先级时决定执行顺序

中断响应流程

停当前指令 → 保护现场 → 查向量表 → 执行 ISR → 恢复现场

ISR 编写规则

快进快出

可重入 (少用全局变量)

清中断标志

共享资源关中断保护

不调用阻塞 / 耗时函数

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45596

    浏览量

    674060
  • 嵌入式
    +关注

    关注

    5210

    文章

    20683

    浏览量

    337455
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式单片机开发学习路径

    嵌入式系统是现代科技的重要组成部分,广泛应用于智能家居、汽车电子、工业控制、医疗设备等领域。学习嵌入式单片机开发不仅能提升个人技能,还能开拓职业发展路径。本文将为你提供一条详细的嵌入式
    发表于 02-09 15:42

    如何入门单片机/嵌入式

    大一学的单片机,本科玩了几年嵌入式,做过智能家居,智能小车,示波器,开关电源等等,后来工作(本人芯片行业)以后就没搞了,但是这段时间积累的经验,可以让整个职业生涯受益。 单片机相对来说更容易了解
    发表于 02-02 06:57

    中断还是轮询?嵌入式外设驱动的最佳实践!

    刚入门做嵌入式开发时,很多人经常纠结:用定时器采集传感器数据,是直接while循环里轮询标志位,还是写个中断函数?串口收发数据时,是用while(!(USART_SR&RXNE))这种
    的头像 发表于 01-04 09:15 619次阅读
    <b class='flag-5'>中断</b>还是轮询?<b class='flag-5'>嵌入式</b>外设驱动的最佳实践!

    什么是嵌入式操作系统?

    嵌入式操作系统的定义 嵌入式操作系统是专门为资源受限的嵌入式设备(比如 STM32 单片机、物联网模块、工业控制器)设计的微型操作系统,核心作用是:管理硬件资源、调度多任务、提供标
    发表于 12-09 10:33

    一个面向单片机、事件驱动的嵌入式开发平台介绍

    EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发一个企业级的嵌入式开发平台,以事件总线
    发表于 12-05 06:26

    开源 | 60余套STM32单片机嵌入式Linux、物联网、人工智能项目(开发板+教程+源码)

    私信免费领取!60余套综合项目案例STM32单片机嵌入式、物联网、人工智能智能车/机器狗/小智AI/家居/农业/安防等多领域项目文档+项目源码,全开源高校教学、学生毕设、创新竞赛、项目练手01
    的头像 发表于 12-04 11:42 985次阅读
    开源 | 60余套STM32<b class='flag-5'>单片机</b>、<b class='flag-5'>嵌入式</b>Linux、物联网、人工智能项目(开发板+教程+源码)

    分享一个嵌入式开发学习路线

    法,这些语法在嵌入式开发中至关重要。 2. 技能进阶期(2-3个月) 从51单片机过渡到主流的ARM Cortex-M系列(嵌入式就业核心平台),学会使用STM32
    发表于 12-04 11:01

    嵌入式单片机定义及区别

    单片机,即嵌入式微控制器MCU,是嵌入式系统的核心组成部分。除此之外,嵌入式处理器还包括嵌入式DSP处理器、
    发表于 11-17 08:11

    嵌入式系统的定义和应用领域

    在一起,共同构成了一个高效、稳定的工作系统。 其实,嵌入式系统的概念与个人PC有着相似的底层逻辑。单片机,作为单个芯片上的计算机系统,其定义明确且独特。尽管不同的单片机在配置、性能、厂家以及指令集
    发表于 11-17 06:49

    单片机嵌入式,到底是什么关系?

    很多人初次接触嵌入式开发时,都会听到一句话:“嵌入式其实就是单片机。”可当你真正开始学习时,会发现嵌入式单片机虽然经常“捆绑”在一起提,但
    的头像 发表于 11-14 10:28 2136次阅读
    <b class='flag-5'>单片机</b>和<b class='flag-5'>嵌入式</b>,到底是什么关系?

    嵌入式从入门到进阶,怎么学?

    (kmallocvs vmalloc)、 中断线程化项目实战:移植 MQTT 到嵌入式设备(物联网数据上报)、用 QT 开发工业设备监控界面(Modbus 协议)。
    发表于 09-02 09:44

    嵌入式单片机,是同一个东西吗?

    嵌入式系统与单片机经常被提及在一起,但它们并不是同一个概念。 嵌入式系统是一个广泛的领域,它涉及到了计算机技术、控制技术、通信技术等多个领域的综合应用。简单来说,嵌入式系统是一种专用的
    发表于 07-09 10:20

    Linux嵌入式单片机嵌入式的区别?

    ,开发工具包括GCC、Makefile等。 3.操作系统 : 单片机嵌入式 :一般不使用完整的操作系统,或者使用简单的实时操作系统(RTOS),如FreeRTOS。 Linux嵌入式
    发表于 06-20 09:46

    嵌入式单片机在电机控制系统中的应用

    摘要:在工业领域,电机的运行状态关系到生产的效率和安全,是广大机电控制技术人员关注的重点。随着数字控制系统的发展,嵌入式单片机在电机控制系统的应用越来越广发,对电机的控制更加的安全、可靠,能使电机
    发表于 06-11 15:07

    51单片机笔记(建议收藏!)

    于初学者来说,不要钻牛角尖,把常见的、大多数的东西把握了,慢慢再去研究小众技能吧。上面讲了这么多,实际上就想告诉初学者:嵌入式或者单片机的入门真的不难,但也不容易,需要你拿出态度来。我经常对我的学生说
    发表于 05-21 17:24