对于 STM32 中断的理解

NVIC EXTI PRIPHER
完成一次完整的中断请求并响应需要三/四种外设来共同完成
例如 将GPIO作为中断的处理流程

一个GPIO正在工作
1. GPIO初始化。包括外设时钟,管脚,速度,模式等。

某一时间点 GPIO发生变化(可能是电平由高到低或由低到高) 需要请求一次中断
2. 将GPIO脚连接到EXTI line。这是通过写AFIO下的EXTICR寄存器实现的。
(一共有20条EXTI通道几乎全部可由AFIO来配置 如GPIOA PIN_0 配置到EXTI0,另外也有几个需要外设本身来配置)

EXTI获取到外设的请求 同意开放此条线路 并开始为此次中断设置详细表单 如:
…是上升沿还是下降沿产生中断
…是产生中断还是产生时间
…是否同意该次请求

3. EXTI初始化,使能该条EXTI line,并做上升下降沿设置。通过写EXTI下IMR, EMR, PTSR, FTSR实现。

EXTI表单填写完毕 提交给NVIC NVIC对此次中断设置优先级 并且签名同意ISR做出相应处理
4. NVIC初始化。包括优先级的计算和使能。

ISR收到NVIC的命令 开始执行
当中断到来,ISR做相应处理后:

回归原来的状态,结束本次中断/事件
1. 清除GPIO寄存器中的信号量。
2. 清除EXTI上的信号量。

整个过程可以类比为公司上下级之间的一个流程:
一个小职工在工作期间想到了一些想法需要其他职工或高层去执行
所以他向CEO提出自己的想法,CEO会询问他想法的细节然后填写好请求表单
如果CEO同意那么他就会告知最高领导人
最高领导人会为这个想法设置优先级并且让目标职工开始执行

在STM32CUBEMAX中配置中断的过程:
1 将GPIO设置为GPIO_EXTI
在这里插入图片描述

2 设置中断触发条件
在这里插入图片描述

3 配置NVIC 配置优先级 使能中断
在这里插入图片描述

4 编写中断服务函数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值