中断的类型

强迫性中断
      正在运行的程序所不期望的,由于某种硬件故障或外部请求引起的


强迫性中断
输入/输出(I/O)中断:主要来自外部设备通道
程序性中断:运行程序中本身的中断
(如溢出,缺页中断,缺段中断,地址越界)
时钟中断
控制台中断
硬件故障

自愿性中断
       用户在程序中有意识安排的中断,是由于用户在编制程序时因为要求操作系统提供服务,有意使用“访管”指令或系统调用,使中断发生


自愿性中断
       
执行I/O,创建进程,分配内存
        信号量操作,发送/接收消息 

### STM32中断类型及分类 STM32微控制器中的中断系统是一个非常重要的功能模块,它允许设备对外部事件或内部状态变化做出快速反应。以下是关于STM32中断类型的详细介绍: #### 1. 中断系统的组成 STM32的中断系统由嵌套向量中断控制器(NVIC, Nested Vectored Interrupt Controller)管理。NVIC负责处理所有的中断请求并按照优先级调度执行相应的中断服务程序[^1]。 #### 2. 中断类型分类 根据来源的不同,STM32的中断可以分为两大类:外部中断和内部中断。 ##### (1) 外部中断 外部中断是由外部信号触发的中断,通常通过GPIO引脚输入到处理器中。具体来说,STM32支持以下几种形式的外部中断: - **EXTI(External Interrupt/Event lines)** EXTI线是用于检测外部事件的主要机制。每个GPIO端口都可以映射到对应的EXTI线上,从而实现外部中断的功能。例如,当某个GPIO引脚上的电平发生变化时,会产生一个中断请求[^2]。 - **按键中断** 这是一种常见的应用场景,比如按下按钮时触发特定的操作逻辑。这种情况下,可以通过配置GPIO作为输入模式,并将其连接至EXTI线路来完成中断设置[^3]。 ##### (2) 内部中断 内部中断来源于片内的外设活动,主要包括但不限于以下几个方面: - **定时器中断** 定时器产生的溢出或者捕获比较匹配等事件都会引发相应类型中断。这类资源广泛应用于延时操作、PWM波形生成等领域之中[^1]。 - **USART/SPI/I²C通信接口相关中断** 当串行通讯协议收发缓冲区满载或是错误发生等情况之下也会激活关联性的异常通知消息传递给CPU以便及时采取措施加以解决这些问题状况下的数据传输效率以及稳定性至关重要因此需要合理规划其优先级别安排确保重要事务能够得到优先处置权利[^2]。 - **ADC转换结束中断** 数字模拟混合电路部分里边涉及到A/D变换完成后自动唤醒主机去做进一步数据分析计算工作流程当中不可或缺的一环就是利用此类特殊用途设计出来的硬件辅助工具所提供的便利条件达成目的效果最佳化表现形式之一即为此处所提及的内容项下所属范围之内。 - **DMA通道传输完成中断** 数据直接存取技术(DMA)能够在不占用过多主控单元时间开销前提条件下高效批量搬运大量资料进出不同存储区域之间位置关系调整过程中一旦整个过程顺利完成则立即发出反馈告知对方知晓当前最新动态进展程度如何等等细节方面的信息提示作用明显增强用户体验质量水平层次提升显著可见一斑[^3]。 --- ### 示例代码展示 下面提供一段简单的基于HAL库实现的外部中断初始化示例代码供参考学习之用: ```c // 初始化 GPIO 和 EXTI 配置 void MX_GPIO_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用 GPIOA 时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置 PA0 为浮空输入 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // 上升沿触发中断 GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* 设置 NVIC 对应中断优先级 */ HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); // 开启 EXTI0 中断 } // 中断服务函数 void EXTI0_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); // 调用 HAL 库通用中断处理方法 } ``` 此段代码展示了如何针对单个IO管脚启用上升沿敏感型别的异步信号捕捉动作序列步骤说明清晰明了便于初学者理解掌握基本原理概念要点所在之处。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值