STMCU小助手
发布时间:2022-8-24 18:00
|
我感觉stm32的外部中断都是大同小异的,因此我以stm32g474为例,配置一下外部中断。举例引脚: PE5 - h* R$ `, g4 P, J" m0 z 配置引脚为输入模式(GPIOx_MODER);- E* b6 r) B6 D! H' B5 Q 配置触发模式(上升沿/下降沿); 配置EXTI的中断屏蔽寄存器(EXTI_IMR); 配置具体触发引脚(SYSCFG_EXTICR);. S; s! c+ f3 F! W$ t4 Q 配置中断允许(ISER);(当然也可以配置优先级分组,我这里不需要,因此省略)% [1 B% M2 m' o; O 首先看EXTI的中断/事件框图:$ Q, L- k6 s; F! k3 w0 [ 6 y* i( d. V- q/ L
要想触发中断,首先经过“边沿检测器”,而边沿检测器需要配置上升沿检测还是下降沿检测。然后通过或门,可以看到或门的另一个输入连接着“软件中断事件寄存器”,这个寄存器可以不用管,然后就是 与上一个 “中断屏蔽寄存器”,最后连接到“中断挂起寄存器”,因此可以看到触发中断需要配置“边沿检测器”和“中断屏蔽寄存器”就可以触发中断了(唤醒和事件也以此类推)。以PE5举例: . E' p$ G: a( d- K0 L, o1 r$ e8 }
配置完之后发现并不能进入中断,那是由于中断允许位没有配置。由于是PE5,那么该引脚属于EXTI5-line,在STM32G4系列向量表中找到EXTI5:
9 a" d0 Z& i, H- m$ X 表中说EXTI的lin5~9都共用这一个向量,那就是它了。配置ISER寄存器的第22位。0 M3 T) S8 q2 }, e+ F, s: v* w, R ) V. ?0 X( f, U
编译运行,发现PE5的上升沿不能进入中断,PA5的上升沿可以,可能还有个选择端口的寄存器,再看手册:2 A7 x, F' h& g, f+ R6 Z( ?
嗷嗷,还要配置SYSCFG_EXTICR寄存器啊,康康寄存器说明: - s& @1 l8 T. ^. J4 K
PE5,那就将这个寄存器配置为0x00000040:
OK,这样就可以通过PE5顺顺利利地进入中断了,中断函数名称不确定的话可以在“.s”文件中找:7 g3 l$ F! F1 z9 m8 T
OK,结束垃圾流水账。, c) C- ]( I7 I4 g ———————————————— 转载:Vice Versa XL. l" e4 @# k1 P. a/ j Z _( P + N3 O) R/ f4 O7 ~ |
【福利三:雨露均沾·逢7狂欢】之一:STM32F1外部中断异常故障的解决办法
STM32中断响应延迟优化:从NVIC配置到DMA加速的极致性能调优
基于STM32串口中断之缓存区溢出卡死经验分享
基于STM32数组越界异常中断经验分享
基于STM32之数组越界异常中断经验分享
基于STM32连接参数更新进程后导致断连的问题分析
基于STM32连接参数更新进程后导致断连的问题分析
基于STM32的定时器不按设定超时产生中断
基于STM32利用TIMER事件和栈帧体验中断响应经验分享
基于STM32外部中断原理和配置代码经验分享
微信公众号
手机版