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 包含以下特性: ● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中断线) ● 16 个可编程优先级(使用了 4 位中断优先级)* I% K( B) r' d) J& u! q7 ]" J' o ● 低延迟异常和中断处理 ● 电源管理控制 ● 系统控制寄存器的实现9 o* w" e3 F# x* p( Z1 q* t% Y0 w3 }: x 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。 02. 外部中断/ 事件控制器 (EXTI) 外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。 EXTI 控制器的主要特性如下:7 C. F, w: ?( L' o) S, T ● 每个中断/事件线上都具有独立的触发和屏蔽 ● 每个中断线都具有专用的状态位 ● 支持多达 23 个软件事件/中断请求 ● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。有关此参数的详细信息,请参见STM32F4xx 数据手册的电气特性部分。; ^% {7 U" v6 ^4 a " h; Q* L1 E* x+ A EXTI框图 9 r& p# x' v: R0 a3 ^) O
唤醒事件管理$ i6 u w/ e- }9 X( P. g# p STM32F4xx 能够处理外部或内部事件来唤醒内核 (WFE)。唤醒事件可通过以下方式产生: ● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。 ) t% K2 m: s0 a: i ● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。8 `4 v: D- U8 j* g( W 功能说明9 j5 ?' z' b! O" d! I( ^) o 要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。 . o/ q6 |! p7 Z 要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置 2 个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。 - I+ D! G, F/ R4 q, t 通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求。 硬件中断选择 要配置 23 根线作为中断源,请执行以下步骤:: k# q, N: N2 Y' p/ ]9 H0 ^ ● 配置 23 根中断线的屏蔽位 (EXTI_IMR) L# e. l3 [! T; {$ u1 h' x0 X ● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR) ● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。 , M; m' v" G! B# Q 硬件事件选择* ^, T* m8 S M C$ A 要配置 23 根线作为事件源,请执行以下步骤: ● 配置 23 根事件线的屏蔽位 (EXTI_EMR) ● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR): }7 `9 w$ Z/ S & N C9 j" T3 A 软件中断/ 事件选择 可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。* W7 o, L( X2 C$ f+ m @5 K ● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR) ● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER) 外部中断/ 事件线映射$ 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
5 X( Z8 ]- m8 y 另外七根 EXTI 线连接方式如下: ● EXTI 线 16 连接到 PVD 输出 ● 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 入侵和时间戳事件 ● EXTI 线 22 连接到 RTC 唤醒事件 % |# ~9 R, c) G U/ P 03. EXTI寄存器 3.1 中断屏蔽寄存器 (EXTI_IMR) Interrupt mask register3 g p, y1 `- R$ O+ D/ |" Z 偏移地址:0x00 复位值:0x0000 0000
3.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 复位值:0x0000 0000 8 Z3 L) y- C4 _5 R: k& [* K" l
z4 Q8 e. @5 Z/ H. U( I' [- D 3.3 上升沿触发选择寄存器 (EXTI_RTSR) Rising trigger selection register/ ~2 T% m/ r2 h. F* \1 k9 ~4 O4 T 偏移地址:0x08 复位值:0x0000 0000
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 偏移地址:0x0C 复位值:0x0000 0000 n' b+ Z" d6 U- k: u 3.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 复位值:0x0000 0000 ; 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 复位值:未定义
04. EXTI寄存器映射: }0 G4 m6 c8 X1 J( T0 ]# `3 G1 k
6 F+ l; w: {) C/ ?) i % c; F) ? w8 E! j1 L |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版