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

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

[复制链接]
STMCU小助手 发布时间:2022-4-2 21:00
01. 嵌套向量中断控制器 (NVIC)* _" c% {' V, x) j) K% z: }- `4 `
NVIC 特性
* M" A; I2 Z2 W( T! s
* i( q' H& o/ u
嵌套向量中断控制器 NVIC 包含以下特性:
: [- q- O+ H9 ]● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中断线)
- ?8 w( I" l2 ~( B. b● 16 个可编程优先级(使用了 4 位中断优先级)* I% K( B) r' d) J& u! q7 ]" J' o
● 低延迟异常和中断处理
: l) c% F* G8 e; ]9 W/ _● 电源管理控制
' p: y! C" l+ q& X$ w! ^● 系统控制寄存器的实现9 o* w" e3 F# x* p( Z1 q* t% Y0 w3 }: x
嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。
5 [2 D& K; X$ f6 K5 o% c0 |& h
  }; P; J9 E( A% U+ V# Z02. 外部中断/ 事件控制器 (EXTI)
+ h1 U& ?, D0 e( A" p: [9 d外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。
2 g& P! e, P1 a$ D# J5 U6 H, I4 B4 @# `) w
. }6 o+ M5 }1 c( D/ nEXTI 控制器的主要特性如下:7 C. F, w: ?( L' o) S, T
● 每个中断/事件线上都具有独立的触发和屏蔽
, M' W" T  P% u# y9 A% I. E● 每个中断线都具有专用的状态位
/ M2 L7 M) c8 e- ~6 u) I9 x● 支持多达 23 个软件事件/中断请求
! `( p( n" f& q( w4 J● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。有关此参数的详细信息,请参见STM32F4xx 数据手册的电气特性部分。; ^% {7 U" v6 ^4 a
" h; Q* L1 E* x+ A
EXTI框图
: \) N" k6 P, D" a7 H  O; g' x3 c( k9 r& p# x' v: R0 a3 ^) O
HM0@_HV3%3G3TYT}DTD]}@S.png
- a3 t* f' n9 I- p% d- }
0 N, M0 S- ]& f4 K$ P唤醒事件管理$ i6 u  w/ e- }9 X( P. g# p

; {3 k  d0 s; \6 q3 zSTM32F4xx 能够处理外部或内部事件来唤醒内核 (WFE)。唤醒事件可通过以下方式产生:
; {) l- @2 u6 z- w
" e5 x2 P, t: @● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。
+ [. K+ ~" R( f9 x( }) t% K2 m: s0 a: i
● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。8 `4 v: D- U8 j* g( W

5 e' S5 K) J+ M. q/ I5 {功能说明9 j5 ?' z' b! O" d! I( ^) o

# D. ~. I* T; |5 ]! E- v8 w要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。
; r  J& T* o# k. d2 f% l. o/ q6 |! p7 Z
要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置 2 个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。
* \+ L) S- V0 W- I+ D! G, F/ R4 q, t
通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求。
- Y/ ]- W1 X/ q5 }' `' K
: }- w7 v& K9 J5 O( M硬件中断选择
6 ^0 f+ g7 |6 y+ T  v6 S要配置 23 根线作为中断源,请执行以下步骤:: k# q, N: N2 Y' p/ ]9 H0 ^
● 配置 23 根中断线的屏蔽位 (EXTI_IMR)  L# e. l3 [! T; {$ u1 h' x0 X
● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
$ K) r$ I  b0 a) s3 L( N● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。
; _# r3 z. K9 [) T4 j- L! j, \, M; m' v" G! B# Q
硬件事件选择* ^, T* m8 S  M  C$ A
要配置 23 根线作为事件源,请执行以下步骤:
; h" U8 p) W, d0 Q8 x" D; m1 }# i4 j● 配置 23 根事件线的屏蔽位 (EXTI_EMR)
" J4 |/ }5 B# D( C( x& W/ m● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR): }7 `9 w$ Z/ S
& N  C9 j" T3 A
软件中断/ 事件选择
: O, y2 p3 p% E5 e4 o( S可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。* W7 o, L( X2 C$ f+ m  @5 K
● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)
7 V8 w. x, W1 H7 C  q* _● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)
4 U1 g7 E+ J9 f3 W1 d1 a
5 q# z# t: G$ e9 @8 f- F外部中断/ 事件线映射$ v4 t: L. L6 S$ F- L; q8 ~9 ^+ B
多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线:0 h# p- ]3 X7 P. o: N' o1 G2 s) N
* W7 W& v  @: Y' V, ?! Y+ W
20200823105024220.png
0 \/ c: D" {& u' q5 X( Z8 ]- m8 y
另外七根 EXTI 线连接方式如下:
# ^: c( ^1 y3 `) g● EXTI 线 16 连接到 PVD 输出
; \" q2 M' L' O. x5 P' k( r● EXTI 线 17 连接到 RTC 闹钟事件9 g) m& B6 k" I: `; M- N
● EXTI 线 18 连接到 USB OTG FS 唤醒事件6 {' J7 `5 b1 J6 J: w% {1 S
● EXTI 线 19 连接到以太网唤醒事件: M0 |4 x0 W0 h; e! h" m5 H. y7 h6 i
● EXTI 线 20 连接到 USB OTG HS(在 FS 中配置)唤醒事件$ j( T& ?; J+ H6 c/ K
● EXTI 线 21 连接到 RTC 入侵和时间戳事件
" r; c. o) h: v# z8 I6 z7 S● EXTI 线 22 连接到 RTC 唤醒事件
1 Q5 E6 P8 O9 V& Z$ o% |# ~9 R, c) G  U/ P
03. EXTI寄存器
9 ]4 E! A. {2 h# s) Z8 e& ?# A3.1 中断屏蔽寄存器 (EXTI_IMR)

! Q  m, G8 E" vInterrupt mask register3 g  p, y1 `- R$ O+ D/ |" Z
偏移地址:0x00
5 F2 S$ y$ d0 l4 C4 A复位值:0x0000 0000
) c- C; B- b' z: ?% a7 v4 f
5 N& M; m+ k/ F& |  l' V' G G~7@`D`Y@0RPH7P(N]$KP8Q.png 9 ?3 T# ^0 }, p7 |, v1 P

2 S* W  h5 q- d/ V2 x- J3.2 事件屏蔽寄存器 (EXTI_EMR), C2 E; W; M; x$ S2 b/ n( ?0 i3 m
Event mask register- ~8 Q& q9 U8 u* ]/ |+ t  c2 C
偏移地址:0x04
( F* |. j& l8 _8 e+ \: b! B复位值:0x0000 0000
$ M% N/ R7 I: @* ?+ \: q4 ^% G8 Z3 L) y- C4 _5 R: k& [* K" l
R(`GU)Y[F%`L0YY87~C9MLR.png ! B. ]. n6 u) _5 M% f0 Y0 [7 c
  z4 Q8 e. @5 Z/ H. U( I' [- D
3.3 上升沿触发选择寄存器 (EXTI_RTSR)
, E& `: H* f0 j7 JRising trigger selection register/ ~2 T% m/ r2 h. F* \1 k9 ~4 O4 T
偏移地址:0x08
+ F- a( q: Z& [' g复位值:0x0000 0000
9 K* x3 S' I  G5 o9 E8 n
% I# c+ X* E4 E$ r3 E DACQRK`P3N~XMV_P`5}A36U.png # P3 {, m6 [0 \. U
8 {7 x2 }1 X) _/ z7 ~4 B# B
3.5 下降沿触发选择寄存器 (EXTI_FTSR)3 O0 r( H' D. e5 d  e
Falling trigger selection register
5 p+ \6 b" l1 H2 D" ?8 q偏移地址:0x0C
; C& E) B! T+ u- B# D复位值:0x0000 0000
% {1 z6 s8 k) u0 M5 F( Y  n' b+ Z" d6 U- k: u

9 j8 Z7 \% s' w# a/ s$ W# T5 z1 B
9 ^, ?; Z  }! N3.6 软件中断事件寄存器 (EXTI_SWIER)0 L0 G7 }# G* F! b3 f# J
Software interrupt event register- Y5 D& M. W; s2 v# S5 G+ i5 x
偏移地址:0x10
- u; O% h8 |! G* X3 b复位值:0x0000 0000
( `& l4 y* k6 \! w+ y0 i9 e* S9 K& o+ V; c) E6 X! ]2 G# m3 a! B6 L9 V; V
& S: k. ~0 Z  b7 h
' ]& A* z3 e# \+ `) W6 r) D
3.7 挂起寄存器 (EXTI_PR); G  N+ q$ K4 H. _# G. E) O4 G8 i
Pending register/ V8 }, g0 w6 Y5 a* g" u
偏移地址:0x14! c% k7 L9 g5 \6 k3 N
复位值:未定义
6 {: d- s* \) r  N! K! G* w3 g
3 }- J/ F6 R( m3 {& A V~KEKQ(@0HY@~(8`JCL_C%V.png
& Q! J6 Z$ f  F
% I; B. C5 M5 W, e: q0 a04. EXTI寄存器映射: }0 G4 m6 c8 X1 J( T0 ]# `3 G1 k

& u1 w% Y3 D- k& N) _7 ] 20200823105151124.png , s! o1 G+ a: n% a3 Z3 [1 y
6 F+ l; w: {) C/ ?) i
% c; F) ?  w8 E! j1 L

' i4 y6 C( R/ ~/ G9 X6 q
OL]L6LFBE10C6(`W5JU]0L7.png
1X6WYZXMT)))KXE87%]L`O3.png
赞 收藏 评论0 发布时间:2022-4-2 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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