STM32CubeMX——外部中断基础(HAL 库)

一、STM32 中断系统简介:

1、 外部中断EXTI是 STM32 芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断。

2、 STM32 芯片有 16 个外部中断源EXTI0~EXTI15,分别对应着 7 个中断向量,也就是对应着 7 个中断服务函数:
EXTI0EXTI1EXTI2EXTI3EXTI4:专用
EXTI5~EXTI9:共用
EXTI10~EXTI15:共用

3、 EXTI0的连接引脚为PA0~PG0,即每个端口组的 0 号引脚,其他中断源的连接引脚以此类推:
在这里插入图片描述
外部中断触发条件:上升沿触发、下降沿触发或双边沿触发。注意:不能配置成高电平触发和低电平触发

4、 STM32 中有 2 个优先级的概念:抢占优先级响应优先级

### 如何在 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]。 #### 总结 综上所述,无论是前期设计阶段还是运行期间都可以灵活运用多种手段去调节是否允许外界因素干扰正常程序流程;当不再需要某些实时感知能力的时候及时予以封锁有助于提升系统稳定性并减少不必要的资源消耗。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~莘莘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值