STMCU小助手
发布时间:2022-4-2 21:00
|
01. 嵌套向量中断控制器 (NVIC) NVIC 特性/ N. A& \$ t5 p; a 嵌套向量中断控制器 NVIC 包含以下特性:5 d' d N, e* w$ L$ d ● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中断线)4 j M8 {7 f9 @1 c8 l) I. p ● 16 个可编程优先级(使用了 4 位中断优先级)$ r- U7 b% g1 V( ^( g) J ● 低延迟异常和中断处理 ● 电源管理控制! b) d* _% C* ?1 }3 A" W' M ● 系统控制寄存器的实现9 `/ @% \# E9 M, I$ M* {- h 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。( [& O' v# N# F- Y/ \) H% |, R/ p 02. 外部中断/ 事件控制器 (EXTI)* g1 y% e1 X7 L3 }& @ 外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。! ~ A2 ?& T" f& ]/ w4 k EXTI 控制器的主要特性如下: ● 每个中断/事件线上都具有独立的触发和屏蔽 ● 每个中断线都具有专用的状态位& c+ X2 k# ~0 ^0 J/ p' I6 Y2 G# y ● 支持多达 23 个软件事件/中断请求 ● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。有关此参数的详细信息,请参见STM32F4xx 数据手册的电气特性部分。 EXTI框图
唤醒事件管理 STM32F4xx 能够处理外部或内部事件来唤醒内核 (WFE)。唤醒事件可通过以下方式产生:1 a9 d8 j# M; a% M ● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。" D8 x( g& |3 g3 N: u d3 K ● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。 功能说明 ; D) R2 _( x/ l- B$ D 要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。6 D4 F1 k, H" R2 P. C, v. e 要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置 2 个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。2 u R: X. F+ d# M 1 l* R5 i2 N7 Y: T+ p) n* i 通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求。" x% B6 e) H, v; T8 x' Q! d, w" F ( {4 c, X3 i0 B 硬件中断选择8 u2 x3 n3 i( o! R! J 要配置 23 根线作为中断源,请执行以下步骤:8 H; A( e" v! t0 s* [5 h ● 配置 23 根中断线的屏蔽位 (EXTI_IMR)# U, D0 M$ y: g1 D ~8 y! O* L ● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)3 ^. Y9 ^4 ~2 e0 {) t/ C, Z: H ● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。8 T. l2 A3 T: z/ [ A! Y9 L # G& e' `( p& [, d% o) L( X' b 硬件事件选择 要配置 23 根线作为事件源,请执行以下步骤: ● 配置 23 根事件线的屏蔽位 (EXTI_EMR) ● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR) 软件中断/ 事件选择 可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。 ● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR) ● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)+ ~% {- E- \$ K, X& i( ]' R( L 6 c/ f7 t7 h4 K0 }9 W3 ]* { 外部中断/ 事件线映射' M3 j4 A* E/ y j" y# n 多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线: 1 o$ c% _3 V5 \8 {/ u; v$ A
0 b! q+ i6 Z& u, \ 另外七根 EXTI 线连接方式如下: ● EXTI 线 16 连接到 PVD 输出 ● EXTI 线 17 连接到 RTC 闹钟事件 ● EXTI 线 18 连接到 USB OTG FS 唤醒事件8 f8 S | [1 R7 l2 E: M4 h* q ● EXTI 线 19 连接到以太网唤醒事件 ● EXTI 线 20 连接到 USB OTG HS(在 FS 中配置)唤醒事件 ● EXTI 线 21 连接到 RTC 入侵和时间戳事件7 M- p$ G, v. H ● EXTI 线 22 连接到 RTC 唤醒事件' t# \! P9 D+ H5 T 03. EXTI寄存器 3.1 中断屏蔽寄存器 (EXTI_IMR) Interrupt mask register* K2 a! }. K& n1 C/ {: ? 偏移地址:0x00 复位值:0x0000 0000) \7 ^& ?: ^- X* [/ v
3.2 事件屏蔽寄存器 (EXTI_EMR)4 k4 r" q0 F p Event mask register% c5 s/ o: [4 p9 B5 J, k- } 偏移地址:0x04 复位值:0x0000 0000) V! s7 R! ~# A ! O# ?! e, [& O8 g
3.3 上升沿触发选择寄存器 (EXTI_RTSR) Rising trigger selection register5 U3 o$ w# C. G1 S" e 偏移地址:0x08 复位值:0x0000 00003 i) I7 h6 J4 w5 U! B
3.5 下降沿触发选择寄存器 (EXTI_FTSR) Falling trigger selection register- H' F; M: i8 v$ w f 偏移地址:0x0C 复位值:0x0000 0000" d4 m' V* J7 g8 c, H: ~ + {8 z: i7 {2 B; @0 n 3.6 软件中断事件寄存器 (EXTI_SWIER)# x) p9 g) m( b+ U! t- | Software interrupt event register 偏移地址:0x10- ]+ ]! a2 Z8 ^' D$ g 复位值:0x0000 0000) N! X" O, H5 j9 S, O/ F % s, q! n+ e: b* N; [ 6 v5 l' G: _: V) R 4 Y2 G1 Z3 ]5 N- Q8 { 3.7 挂起寄存器 (EXTI_PR) Pending register 偏移地址:0x146 _; m, K" x' N- Y8 z5 Z. J 复位值:未定义) t) m6 \0 B4 u6 C' F' ? , c0 s: F7 @0 ^5 ~9 b: Q& |
2 ?4 ^0 s& t: t. ] 04. EXTI寄存器映射
|
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
微信公众号
手机版