中断的秘密

发布时间:2026/6/29 13:00:52

中断的秘密 今天我们将了解中断的秘密一.内核总线外设我们要了解什么是中断之前先要知道一个芯片的具体结构一个芯片具有内核总线外设这三个结构。内核由ARM公司提供的含有ETM(跟踪机制)NVICMPUJTAGSW(调试端口)S-BUS(系统总线)I-BUS(指令总线)D-BUS(数据总线)ARM-CPUFPU单元的核心部件其核心部分是ARM-CPU。外设GPIODMA等具有多个功能的外部功能结构即片上外设。总线一个让内核与外设相互“沟通”的通道类似树的主干。二.NVIC(中断控制器)再次我们应该了解NVIC这个内核中的一个模块。NVIC这个模块是负责控制中断的中断控制器其中有部分寄存器只能在特权级下访问有部分寄存器可以在用户级下访问例如软件触发中断寄存器NVIC_STIR在默认情况下需要在特权级下才能设置但可以通过配置相关寄存器允许在用户级下访问以便在非特权级代码中产生中断我们在生成软件中断时用的就是用户级下访问的寄存器通过产生中断并测出产生中断的时间我们可以找出一些难以找出的Bug。三.中断所以中断是什么呢其实中断分为两种内部异常外部中断。内部异常同步异常CPU内部发生异常此时CPU可以立即响应并报错延迟极小。外部中断异步异常由UARTIICSPI等外设发生的异常当这种异常产生时需要通过NVIC这个中断控制器让内部CPU响应这是具有响应时间的。至此我们了解了内核总线外设是什么并且我们知道了外部中断和内部异常的区别。四.中断向量表2次幂对齐此外我再介绍一下中断向量表和2次幂对其。我们的STM32F411板子有87个外部中断16个内部异常一共103个若每个占4个字节则占有412个字节。但STM32F411的Cortex-M4内核要求中断向量表必须对齐到512字节即0x200的边界上。这是由硬件的向量表偏移寄存器VTOR的设计决定的——该寄存器的低9位是只读的0用于确保对齐。因此虽然我们的中断向量实际只占用412字节但在分配内存时编译器必须将整个向量表的起始地址放在一个能被512整除的地址上并将整个表的大小按512字节进行‘圆整’以保证硬件能正确地通过VTOR找到每个中断的入口地址。如若没有对齐则会在读取时出错我们从有412这个数取出512这个2的次幂数的过程叫做圆整而将412个字节与0x200对其的过程叫做2次幂对齐。经过2次幂对齐之后列出的一张具有103个中断的表叫做中断向量表。五.总结今天我们学习了内核总线外设的概念内核是心脏外设是四肢总线则是血管。了解了NVIC是一个中断控制器。分清了中断有外部中断和内部异常的区别。还知道了中断向量表是从2次幂对齐中产生的。

相关新闻