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

【经验分享】STM32 中断和事件

[复制链接]
STMCU小助手 发布时间:2022-6-13 10:19
01. 嵌套向量中断控制器 (NVIC)
# t) U8 N8 |; V; a3 p" \+ m; _+ C" ZNVIC 特性
. i5 r8 U3 b: c# {0 U3 f2 f  D) c6 _. M5 b  A* ^+ R% P
嵌套向量中断控制器 NVIC 包含以下特性:6 H' s3 h* J5 B! i
● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中断线)
% ]" D# a( [7 F; K- Z# I, c● 16 个可编程优先级(使用了 4 位中断优先级)
  W) V$ P4 _6 d2 u- v% ?0 F" [● 低延迟异常和中断处理9 t8 a1 k/ _( g. e" g3 a& j: C" \
● 电源管理控制
; y$ }# d+ d# E% w4 X: {● 系统控制寄存器的实现7 c, |* t# s$ H  N5 P- G# }/ I1 q
嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。8 X+ P5 b" S: O& l$ m

/ ]2 T6 l- k3 r' ]2 b; F5 P; g7 R) l+ C02. 外部中断/ 事件控制器 (EXTI)
9 I1 j" A$ n% u
外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。
1 P, p/ }* P) {/ X, |7 K- ]
( O7 b: L& w) T6 \! uEXTI 控制器的主要特性如下:( g4 j; _  P8 \7 u: {
● 每个中断/事件线上都具有独立的触发和屏蔽
( V. x4 j. z" B. j● 每个中断线都具有专用的状态位
! \1 {) ?! ^! i" G● 支持多达 23 个软件事件/中断请求
$ Y) N6 b- V" v; M! N& c* D$ C● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。有关此参数的详细信息,请参见STM32F4xx 数据手册的电气特性部分。
7 k* }$ ?/ f( j, ^( V7 l. U* h; Z5 P) |& J9 z; U1 |  D
EXTI框图
+ d  z3 T" t3 d3 M2 j
- N1 c& J0 G* f+ w3 [" J
IM]U{S@]JK`BL@AHZZQEGFQ.png & u% r/ x2 V0 l6 `6 L; |1 @% n
& Z  `* \0 ]5 O1 ?8 U8 R
唤醒事件管理
/ i7 T! v& _9 z+ Z* k: K8 H
: J, {/ L0 I- m- p: R  J+ W* ^, _' J
STM32F4xx 能够处理外部或内部事件来唤醒内核 (WFE)。唤醒事件可通过以下方式产生:
5 }6 L& T$ X/ J  T+ B, y, |, [
- H" a) q5 s& i& I4 J) o0 H● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。9 }9 c$ Q9 N) ]- h2 ?

1 a8 b) l" u; g  |* Q. F● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。4 p/ c3 W. [# u$ L& I& `
0 }$ H" m* n8 S" I4 Q  ~) P1 G" B$ J
功能说明
9 N! S% N. X# ~5 x! z- M! M  e' d4 d7 ]
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。6 J8 z5 g( \* @- K. D" X# Z6 j1 c
8 I' H. h1 k& k  ^( u: y2 r
要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置 2 个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。
) r1 c1 a  U% r1 U4 {7 f
6 j% s/ A: W3 Y0 n0 s通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求。
2 i# ^# \+ B3 \
0 Q. t* J. ]: W3 G; y8 ~硬件中断选择
0 ~. b. v4 D) \8 _
要配置 23 根线作为中断源,请执行以下步骤:
6 p% l: t. ]+ A0 e* x5 C* M& T● 配置 23 根中断线的屏蔽位 (EXTI_IMR)" q; Q4 ]! G  j
● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)- W4 \9 G$ C) N; [1 X, l3 g
● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。
/ m8 o# {  a. k3 @/ ^0 _( S9 T  @( o! m, _; P, I/ K
硬件事件选择

! I) b: h5 P9 X- {* k" p3 l要配置 23 根线作为事件源,请执行以下步骤:1 n/ g% p" I8 k2 I' m9 p' u
● 配置 23 根事件线的屏蔽位 (EXTI_EMR). c* C7 H3 i( r' b' ]! N5 D& T
● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
1 U/ Y9 W* I2 g2 |% A
1 e' g1 F" `* `# q6 h3 o软件中断/ 事件选择
- W% G- P7 y( Z  t4 l7 ^) F可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。9 v+ c1 A) M4 r9 N9 p, a# i
● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)8 L- A  G; v* V7 g* k
● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)
/ i- `( o  N; k6 X+ K( H  U" x' k' h. z  R4 H4 Z
外部中断/ 事件线映射
/ P2 R9 F2 N1 W多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线:
/ H0 Q. l0 _9 G4 ^0 U* l  X! b4 @
U6ZNF07%SKDA]~7DEU236Q6.png
* e/ w2 a7 `. \& C/ Q" |# ]7 z/ e% M- ]' {& n+ u
另外七根 EXTI 线连接方式如下:
0 C0 v( }/ O' s: {- X● EXTI 线 16 连接到 PVD 输出
  j5 U+ E. m. M1 B● EXTI 线 17 连接到 RTC 闹钟事件
$ Q( F8 N. t. s7 L, j● EXTI 线 18 连接到 USB OTG FS 唤醒事件
, ]' O: I& m5 u" X- b7 f2 ?● EXTI 线 19 连接到以太网唤醒事件
, S1 p  i) c+ J9 w! x7 t● EXTI 线 20 连接到 USB OTG HS(在 FS 中配置)唤醒事件
+ k9 Y7 N4 K, G% y● EXTI 线 21 连接到 RTC 入侵和时间戳事件
* Z& a  C) _( I. n) h( K) M/ W, {● EXTI 线 22 连接到 RTC 唤醒事件
4 D5 J& G: n, D$ r9 ~* S' e6 u" S5 d. ^: k: B9 C
03. EXTI寄存器

' j& f- F; Y( N8 N% d7 ?3.1 中断屏蔽寄存器 (EXTI_IMR)

0 P6 r& {$ @9 SInterrupt mask register
- H: q% d* P: y5 L; z2 g' k* ^偏移地址:0x007 t. `# Z' A- B' P. X$ R; E6 F
复位值:0x0000 00007 B7 [5 J# o/ |" ~- @

4 X* b0 Q" x9 u; P" s `G)FH~5_SBYW9QRT5]M0CH0.png 7 p! }0 ^3 |# e- J$ i% C* A0 b

4 ]  U$ w+ @2 J; w, e3 k# ~3.2 事件屏蔽寄存器 (EXTI_EMR)
8 k2 p- e% E2 Q3 i% J+ c
Event mask register7 R5 h8 {4 f" N4 M3 q
偏移地址:0x045 u& U% v- d- e3 T2 q6 e+ w6 C
复位值:0x0000 0000
5 w7 ?9 O5 t# [: N4 v3 X* g* j& z2 F8 Z" n! N) U
3LLJJ[Q0S[KI$CV584NORWW.png - }, t+ v/ }7 J, \1 a
5 x) ~1 j$ \. @* X
3.3 上升沿触发选择寄存器 (EXTI_RTSR)# q( G+ G. C! @9 n7 H
Rising trigger selection register9 m# J0 G' Z; f
偏移地址:0x08
- H' R% d' n5 z# i$ A% U3 _复位值:0x0000 0000
2 t) Y+ c! J- Y; u% ^
# l4 u+ c! G- L, I
* G6 l3 Q. s8 d4 k# I! l  L. t. L
4 f. c; y- R( ?2 X: N3.5 下降沿触发选择寄存器 (EXTI_FTSR)( g) J$ r5 g3 l9 s5 u+ A* p# ?4 ~" r
Falling trigger selection register
- `3 X6 h9 u+ l, t" P1 }偏移地址:0x0C( R* `+ n0 u4 |; y" L
复位值:0x0000 0000
9 O+ Z, B  g% P6 t" ^5 S) K. \, `  |- X% T' p8 s8 L) W
WW3XSLIIM_GK145B`{LD48S.png
  u: W$ m7 Q, E0 I
+ u" L* [$ @5 |; h, N3.6 软件中断事件寄存器 (EXTI_SWIER)
& W+ f% [9 u" vSoftware interrupt event register
) i2 {1 D! h/ q/ y偏移地址:0x10
4 O) y, X1 Z: ~1 F复位值:0x0000 0000$ I3 D  z# i3 X9 f

) O. w. w7 w, C5 g! D 2}~MYK9$V8_XYJPK)J3}DB1.png
7 ^6 e" L% m5 a1 F( m, j* H! K! C' K* e, D  x# Q
3.7 挂起寄存器 (EXTI_PR)5 p! M& N; a2 l2 x" b; Z
Pending register5 ^+ X2 I7 W8 y
偏移地址:0x14
* [, M0 \' L# G5 s. U6 Z/ ~' d1 y2 R复位值:未定义4 s! A- b$ K/ H+ A/ A% {
" ^) l4 F6 R' Q/ r; f
YR$C[Z[X`@~4B_C{N8D)F{S.png
) D; n  S, S) c3 ]( f" @9 [$ e: E$ M) o! q
04. EXTI寄存器映射
0 U: o0 @  m) d2 l" B" x6 M! C $@E%SJ42K5OG1JM1D92P${Q.png
% P2 l* u) S5 r! E5 k% J: t% Q7 a0 `/ Q

0 ?0 o% }; g$ ^5 J$ {' g
; p0 r2 @, _5 Y# Y+ H% L( T$ A9 O4 g2 p
6 Q6 t! h' S. T+ V8 i  o8 P

9 y0 E% h, j2 t
9 ]% w$ S! F/ R( N7 V
0 r) B9 }' g/ y4 d" Q) Q' m, l& b
赞 收藏 评论0 发布时间:2022-6-13 10:19

举报

0个回答

所属标签

相似技术帖

官网相关资源

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