当前位置: 首页 > news >正文

中断很难?看完这篇就懂了

1.内核,总线,外设

这三个概念是理解中断的必要前提,一个芯片具有内核、总线、外设这三个结构

内核:芯片里的内核有很多架构,如ARM架构内核,它包含了许多核心部件,是整个芯片的大脑

总线:是连接内核与外设,外设与外设之间的通道

外设:通过总线与内核,用于实现芯片的功能,如GPIO输出高低电平,ADC采集电压,串口发送数据

2.NVIC

它是专门负责管理中断的控制器,处于芯片的内核中,响应速度很快

它可以接收外设的中断请求,然后给CPU发送信号,执行中断

3.中断与异常

异常:发生在CPU内部,CPU的运行流被打断,可能是某些致命错误,也有可能是中断引起的

中断:被外部事件打断,如按键检测、定时器触发,然后NVIC接收到中断信号,再给CPU发送信号,触发CPU异常,执行中断函数

4.中断向量表

中断向量表是一段存储所有中断的地址表,当中断发生时,CPU会根据中断编号,在向量表中找到对应的地址,直接跳转到该地址执行函数。

如定时器完成了自动重装载值的刷新,CPU就会检测并判断是定时器发生的中断,然后就会通过中断向量表找到中断回调函数的地址,并执行中断回调函数。

5.中断悬起和中断延迟(产生单一一次中断的中断处理过程)

中断悬起:当外设触发中断条件时,会通过总线向NVIC发送一个中断悬起的信号,而NVIC中有很多悬起寄存器和解悬寄存器,信号传输到NVIC后,就会根据是哪个外设的中断将某个悬起寄存器的某个比特位置1,等待着CPU的响应

中断延迟:从外设触发中断条件向NVIC发送中断悬起信号到CPU开始执行中断回调函数的时间间隔。里面包含了信号在总线的传输过程,CPU还在执行更高优先级任务或当前指令未完成时悬起寄存器保持高的时候。

最后补充一点,在开始执行中断回调函数时,悬起寄存器那个被置1的比特位就会被置回0。

6.产生持续中断的中断处理过程

举个例子,将GPIO设置成低电平触发中断,然后我们把按键设置成上拉模式并按下,那中断请求就会不断从外设通过总线向NVIC发送,接着悬起寄存器就会置1,然后过了中断延迟后就会开始执行中断回调函数,此时比特位就从1变成了0,即使中断悬起信号在不断被传输进NVIC但比特位不会重新置1了,直到中断回调函数执行完比特位才会置1,此时处理器模式又还是处于Handler模式,所以会极快又进行终端回调函数。

7.产生多次中断悬起信号的中断处理过程

1)多个中断请求产生于寄存器的比特位已经置1的情况,简单来说就是有个外设发出了中断悬起信号,然后将寄存器的某个比特位置1,然后再中断延迟期间,即中断回调函数还没执行,那个外设又传来很多个信号,但是其作用还是将那个比特位置1,并不能记住他的次数,所以到最后中断回调函数还是只会执行一次

2)第二种特殊情况就是前面和单一一次中断的中断处理过程一样,不同的是当在执行中断回调函数的过程中时,此时属于那个外设的寄存器的比特位是0,然后这时来了个中断悬起信号,把它重新置1了,然后当中断回调函数结束时,没有多余的出栈入栈操作,就直接连着执行中断回调函数了。

8.异常流程(压栈)

由于异常其实就是中断的一个流程,所以异常流程是可以套用在中断中的。

压栈就是指CPU检测到异常时,自动将当前程序的“上下文信息”保存到栈内存的过程,这里的上下文指的有xPSR、PC、LR、R12、R3、R2、R1、R0等寄存器。

其主要作用就是保存并保护主程序。

谢谢您的驻足浏览!

http://www.jsqmd.com/news/491859/

相关文章:

  • Claude code安装/CC switch安装
  • 伟伦定制工厂店
  • 医疗HIS系统Java如何通过控件优化病历图片文件夹的浏览器端分片加密断传?
  • 315严选好锅:京尚纯陶瓷锅具,健康看得见
  • 基于Spring Boot的高校二手市场交易系统设计与实现vue3
  • 2026大专财富管理毕业生面临的岗位饱和问题及数据分析技能的应对策略
  • COMSOL太赫兹超表面BIC与能带折叠
  • 57.状态机的几种实现方式
  • sqlmap 魔改研究 —— 从流量特征到 WAF 对抗
  • 这个PSO优化BP神经网络的骚操作有点东西啊!咱们今天不整那些虚头巴脑的理论推导,直接手撕代码看看这玩意儿到底怎么玩的
  • 【认识-掌握】Elasticsearch的用法
  • 2026江苏装修装饰/整装/家装/全包装修装饰二手房装修公司实力公司推荐 - 2026年企业推荐榜
  • RocketMQ 高频面试题
  • 2026年打造品牌AI标签,用触有数据提炼“高效、可靠、性价比”印象!
  • 2026年上海松江泗泾学画TOP5机构,哪家才是靠谱之选?
  • Activiti7(流程变量+网关)
  • 程序员生存图鉴2026:技术深耕、职业破局与可持续发展
  • 1126b移植SE8025T
  • NodePy 自动化办公节点包:零代码实现办公自动化
  • day114(3.16)——leetcode面试经典150
  • QtScrcpy官网下载与使用教程:安卓投屏神器完全指南(2026最新版) - xiema
  • FX5U PLC数据类型详解
  • 基于SpringBoot的幼儿园管理系统
  • springboot基于微信小程序的摄影作品分享交流平台设计与实现
  • 大模型基础
  • 网关核心功能全解析
  • python django框架开发实践
  • 开理发店3年,我最后还是关掉了那个“前台”
  • 快期指令系统优势全解析:高效合规的期现交易新范式
  • JavaWeb 笔记 02