你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的外部中断(寄存器控制)——个人笔记

[复制链接]
STMCU小助手 发布时间:2022-10-12 17:39
我感觉stm32的外部中断都是大同小异的,因此我以stm32g474为例,配置一下外部中断。举例引脚: PE5/ F) W! F* ?' Z; u  [# k
1.配置引脚为输入模式(GPIOx_MODER);  T3 ~7 ~3 r8 r. G: A
2.配置触发模式(上升沿/下降沿);* Z: c) H; H& B: ~9 L3 `$ u
3.配置EXTI的中断屏蔽寄存器(EXTI_IMR);
& P) H4 c1 w$ y/ ?8 [4.配置具体触发引脚(SYSCFG_EXTICR);( S' p5 a2 ?4 n6 @3 e
5.配置中断允许(ISER);(当然也可以配置优先级分组,我这里不需要,因此省略)
: T% ^2 T& S7 p% ]/ L' [, g$ |首先看EXTI的中断/事件框图:
4 T: o& O$ Z2 Q5 }: \) |2 [' o$ g. _3 ^1 C: F, U+ b$ \4 n
20200923142607247.png
; U4 ^  F1 ?5 n% j
4 ^" ]+ a  B% O' ~# `要想触发中断,首先经过“边沿检测器”,而边沿检测器需要配置上升沿检测还是下降沿检测。然后通过或门,可以看到或门的另一个输入连接着“软件中断事件寄存器”,这个寄存器可以不用管,然后就是 与上一个 “中断屏蔽寄存器”,最后连接到“中断挂起寄存器”,因此可以看到触发中断需要配置“边沿检测器”和“中断屏蔽寄存器”就可以触发中断了(唤醒和事件也以此类推)。以PE5举例:
8 T- i# e8 k7 x( R$ t( x6 A; S* k( y$ i) e- H
  1. EXTI->RTSR1 |= 0x0020;
    3 O6 O, l6 w. h2 w
  2. EXTI->IMR1 |= 0x0020;
复制代码

4 l+ g: S# O9 n. [: e  o9 v配置完之后发现并不能进入中断,那是由于中断允许位没有配置。由于是PE5,那么该引脚属于EXTI5-line,在STM32G4系列向量表中找到EXTI5:
0 n1 |8 J% Z9 X* v; e! ~
5 e% t2 ]' P" f# S# Y 2020092314534189.png ) e- ~3 P3 q: L8 F5 a6 S
: H" a1 R3 y' _; L
表中说EXTI的lin5~9都共用这一个向量,那就是它了。配置ISER寄存器的第22位。8 M! N* ^5 q2 R6 S) ?9 ]; Q6 D
0 `( @" d; w0 r8 ~$ X- [& J) X7 W
  1. NVIC->ISER[0] = 0x00800000;
复制代码

; \" f/ o3 p* q9 B  N6 M) ^编译运行,发现PE5的上升沿不能进入中断,PA5的上升沿可以,可能还有个选择端口的寄存器,再看手册:1 Z- |) M) u3 T; a5 h7 p) C

1 R& T; P+ J) j" a$ z3 B# O 20200923145843258.png + N1 F7 B- ]3 h4 d3 T( O
+ u0 |$ ^# f7 N5 z" d
嗷嗷,还要配置SYSCFG_EXTICR寄存器啊,康康寄存器说明:& H6 u1 d1 q% l/ r; S

% v1 A2 z* _% E# O$ ~4 D0 S 2020092315013076.png " J8 d; Z9 K5 m; h6 |# L1 a
; @! Q3 P4 i) Z  X: ^
20200923150213395.png   `0 ?5 ]( ]0 |2 I+ B, p
: E& S* P- H( M- j
PE5,那就将这个寄存器配置为0x00000040:, t0 P4 w$ R9 j- u* M7 W. x# I

2 I6 X( L; o) \. g: N
  1. SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI5_PE;
复制代码

- Q! A) x7 \  F3 N2 H6 i7 v8 {OK,这样就可以通过PE5顺顺利利地进入中断了,中断函数名称不确定的话可以在“.s”文件中找:
- Z% F) I9 q# \1 c" U, x8 }6 [: t
20200923150620161.png 8 y3 w4 c/ Z9 {8 v( C* P
8 c- h, r3 ?7 c' B) |3 ~$ A: J9 ^. ]
OK,结束垃圾流水账。/ O1 c" Y* {& C6 L' ~+ L1 p# K, \1 f7 e
————————————————
- L* ?0 f+ _" a, D3 O版权声明:Vice Versa XL
( w! _9 [9 C( g  k/ X
$ c& ^& o# P8 D6 z: ^" G
" c9 q- o" v8 ]9 V9 a
赞 收藏 评论0 发布时间:2022-10-12 17:39

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版