我们首先要区分内核与外设。内核是为众多应用程序提供对硬件的安全访问的软件芯片,如Cortex_M4,是ARM公司开发的。外设是ST公司在拿到这个内核后,制作了相应的硬件,如GPIO、RTC以及USART等等,输入输出、外储存器统称为外设。
异常是对所有能打断程序正常执行的统称,中断属于一种异常。在内核中,异常就叫异常,而在外设中,异常被称为中断。

图片来源:@rivencode
那么我们就来介绍中断的两个板块:NVIC和EXTI。
1.NVIC(Nested vectored interrupt controller,嵌套向量中断控制器)
NVIC属于内核部分,如上图所示,设置在Cortex_M3/4/7中。它支持256个中断(16个内核中断和240个外部中断),支持256个优先级(过于豪华,所以是允许芯片公司进行裁剪的),以STM32F103xx为例,它只有10个内核中断、60个外部中断和16个优先级,相比之下就简单很多,也降低了成本。
不管是内部中断还是外部中断,都是有相应的中断服务函数,而该函数是被定义在中断向量表中的。中断向量表是一块已定义的4字节对齐内存,存放各个中断服务函数程序的首地址。比如在main函数运行的时候,会被其他的中断服务函数打断,因为main函数的优先级最低。

图片来源:正点原子
接下来介绍NVIC相关的寄存器。
中断使能寄存器有8个32位寄存器,对应的是240位外部中断(32*8=256,有16个空闲),每位控制一个中断,当使用HAL_NVIC_

文章详细介绍了嵌套向量中断控制器(NVIC)和外部中断事件控制器(EXTI)的工作原理及其在STM32微控制器中的应用。NVIC支持中断优先级和嵌套,EXTI则用于外部硬件事件的检测和处理。STM32通过AFIO进行IO复用和EXTI映射配置。文章还涵盖了中断的启用、配置和处理流程。
最低0.47元/天 解锁文章
7147

被折叠的 条评论
为什么被折叠?



