STM32 CubeMX(二)—— 外部中断


前言

中断

通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。

这样的事件与 CPU 芯片内外部硬件电路产生的电信号相对应。

同步中断

当指令执行时,由控制单元产生的。

之所以称为同步,是因为只有在一条指令终止执行后 CPU 才会发出中断。

异步中断。

由其他硬件设备依照 CPU 时钟信号随机产生的。

通常我们所说的中断指的是异步中断,我们将同步中断称为异常。异常是由程序的错误产生的,或者是由内核必须处理的异常条件产生的

作用

通过中断可以使处理器转而去优先运行正常控制流之外的代码。

优先级

中断嵌套

中断与IRQ

每个能够发出中断请求的硬件设备控制器都有一条名为IRQ(lnterrupt ReQuest) 的输出线。

STM32中断

### 如何在 STM32CubeMX 中配置以关闭外部中断STM32CubeMX 工具中,可以通过调整 EXTI(External Interrupt/Event line)的相关设置来实现对外部中断的开启或关闭功能。以下是关于如何通过软件和硬件配置的方式关闭外部中断的具体说明。 #### 1. 硬件层面的配置 在 STM32CubeMX 的图形化界面中,可以手动取消勾选与外部中断相关的选项,从而禁用该功能。具体方法如下: - 打开 **Pinout & Configuration** 页面。 - 定位到需要配置 GPIO 引脚的位置,并将其模式更改为 `GPIO Input` 或其他非中断模式[^1]。 - 如果当前引脚已经配置为外部中断模式,则需移除其关联的 `EXTIx` 中断线配置。 #### 2. 软件层面的操作 除了在 CubeMX 图形界面上修改外,还可以通过生成代码中的初始化部分动态控制外部中断的状态。例如,在 HAL 库项目中,调用以下函数可临时屏蔽指定线路的中断请求: ```c // 关闭特定 EXTI 线路的中断使能状态 HAL_NVIC_DisableIRQ(EXTIx_IRQn); ``` 上述代码片段展示了如何利用 NVIC (Nested Vectored Interrupt Controller) 来管理中断控制器的行为,其中 `EXTIx_IRQn` 表示具体的外部中断号[^2]。 另外需要注意的是,如果希望永久性地停止某个事件源触发中断响应机制的话,还需要进一步清除对应标志位或者更改检测条件至无动作形式: ```c // 清楚挂起的中断标记 __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_x); // 设置下降沿/双边缘不敏感型过滤器参数 LL_EXTI_InitTypeDef exti_InitStruct = {0}; exti_InitStruct.Line_Enabled = LL_EXTI_LINE_DISABLE; LL_EXTI_Init(&exti_InitStruct); ``` 以上 C 语言实例分别演示了两种不同方式达到相同目的——即终止由按键或其他物理信号引起的异常跳转过程[^3]。 #### 总结 综上所述,无论是前期设计阶段还是运行期间都可以灵活运用多种手段去调节是否允许外界因素干扰正常程序流程;当不再需要某些实时感知能力的时候及时予以封锁有助于提升系统稳定性并减少不必要的资源消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值