STM32外部中断及CubeMX中断配置

本文详细介绍了STM32外部中断的工作原理,包括中断触发条件、优先级设定和CubeMX配置步骤。重点讲解了如何利用多个IO口共享中断线,以及如何通过中断服务函数处理来自不同IO口的中断请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

STM32外部中断概述

EXIT框图

中断配置优先级

CubeMX中外部中断的配置


STM32外部中断概述

外部中断是STM32实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。

EXIT框图

       外部中断的触发条件有三种,电平上升沿触发,电平下降沿触发,电平上升下降沿均触发。这三种情况都是读取到的IO口的电平状态,通过控制IO口的电平状态从而实现触发中断是最常见的使用外部中断的方法。

       STM32种EXIT有20个中断线,但是只有前16个中断线是我们可以使用的,其余的线程都被其他功能所占用

       STM32虽然只有16个中断线,但所有的IO口都可以触发外部中断,这是怎么做到的呢?其实是这样的,STM32的设计者将多个IO口并在一条中断线上,从而实现所有的IO口都可以触发外部中断,简单来说就是中断线为一个开关,而我们可以通过多个渠道(IO口)来打开这个开关。注意虽然这些IO口都可以触发中断,但一条线程上的IO口只能触发同一中断线,也就是这些IO口触发中断后,回调函数都执行的是同一任务。(回调函数:中断服务函数,触发中断后执行相应的任务)

中断配置优先级

   中断很多,如果同时有多个中断发生,该怎么办?那么就要涉及到一种叫做优先级的东西了。

  • 优先级:一种约定,优先级高的先做,优先级低的后做
  • 优先级分为主优先级和次优先级,一般先比较主优先级后比较次优先级
  • 数字越小优先级越高

       在执行中断时,如果同一条件触发了两个中断,那么优先级高的中断会先被执行,而优先级低的则会现被暂时挂起,等待优先级高的中断执行完毕。

CubeMX中外部中断的配置

首先是最基本的配置

时钟树的配置

下面开始配置外部中断,以PA3为例

 

 

 以上就是中断配置的全部内容了。

### 如何在 STM32CubeMX配置 NVIC 中断优先级 #### 使用图形界面进行基本配置STM32CubeMX环境中,可以通过直观的图形化界面来设定NVIC(嵌套向量中断控制器)的相关参数。启动软件并加载目标MCU型号之后,在“Pinout & Configuration”标签页下找到“Connectivity”分类中的“System Core”,接着点击进入“NVIC”。这里列出了所有可用的中断线,每条记录都允许单独调整其抢占优先级(preemption priority)和响应优先级(subpriority)[^1]。 #### 配置具体数值 当选择具体的中断源后,右侧会出现该中断的具体属性编辑框。对于优先级分组的选择取决于所使用的芯片版本和支持的最大组合方式;例如,在某些系列里可以选择`NVIC_PriorityGroup_2`这样的预定义宏值表示采用两比特作为抢占级别编码而另外两位用于子优先级划分[^4]。一旦决定了整体框架,则可以在相应字段内输入期望分配给特定事件处理流程的重要性程度——较低数字意味着更高紧急度或更快捷的服务请求接管能力。 #### 自动生成代码后的微调 完成上述操作保存项目文件并通过工具链生成初始化C/C++工程结构以后,开发者还可以基于实际应用场景的需求对自动生成的部分做适当补充或是修正。这可能涉及到直接修改`.h/.c`文件里的静态常量声明、函数原型声明乃至实现细节等层面的工作。不过一般情况下,默认由STM32CubeMX准备的基础已经足够满足大部分常规用途的要求了[^2]。 ```cpp // 示例:手动设置TIM2全局中断优先级为(抢占优先级=1, 子优先级=2) HAL_NVIC_SetPriority(TIM2_IRQn, 1 << (8 - __NVIC_PRIO_BITS), 2); HAL_NVIC_EnableIRQ(TIM2_IRQn); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值