STM32中EXTI和NVIC的关系

Posted lixuejian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32中EXTI和NVIC的关系相关的知识,希望对你有一定的参考价值。

(1)NVIC(嵌套向量中断):NVIC是Cortex-M3核心的一部分,关于它的资料不在《STM32的技术参考手册》中,应查阅ARM公司的《Cortex-M3技术参考手册》Cortex-M3的向量中断统一由NVIC管理。

 

(2)EXTI(外部中断):EXTI是ST公司在其STM32产品上扩展的外中断控制。它负责管理映射到GPIO引脚上的外中断和片内几个集成外设的中断(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及软件中断。其输出最终被映射到NVIC的相应通道。因此,配置EXTI中断的过程必然包含对NVIC的配置,例如下面配置EXTI0的过程,就要首先配置EXTI控制器(使能相应的中断线,选择中断/事件模式,触发边沿极性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道号,中断优先级,中断屏蔽状态)。

 1 /* Connect EXTI Line 0 to GPIO Pin PB0 */
 2 
 3 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
 4 
 5  
 6 
 7 /* Configure EXTI line 0 */
 8 
 9 EXTI_InitStructure.EXTI_Line = EXTI_Line0;
10 
11 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
12 
13 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // or Rising
14 
15 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
16 
17 EXTI_Init(&EXTI_InitStructure);
18 
19 /* Enable this interrupt on corresponding NVIC channel */
20 
21 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // EXTI0_IRQn is defined in stm32f10x.h
22 
23 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
24 
25 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
26 
27 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
28 
29 NVIC_Init(&NVIC_InitStructure);

其中EXTI0_IRQn的值,其实就是EXTI0中断向量在中断向量表中的位置(STM32技术参考手册中断向量表Position栏中的数值)

以上是关于STM32中EXTI和NVIC的关系的主要内容,如果未能解决你的问题,请参考以下文章

第17章 EXTI—外部中断/事件控制器

STM32 NVIC配置详解

STM32的外部中断问题

GPIO—按键中断

STM32学习笔记

基于STM32F1系列和LDV5语音模块的语音控制LCD屏幕的点亮