STM32中EXTI(外部中断)和NVIC(嵌套向量中断)的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32中EXTI(外部中断)和NVIC(嵌套向量中断)的关
系
NVIC 是Cortex-M3 核心的一部分,关于它的资料不在《STM32 的技术参
考手册》中,应查阅ARM 公司的《Cortex-M3 技术参考手册》Cortex-M3 的向
量中断统一由NVIC 管理EXTI 是ST 公司在其STM32 产品上扩展的外中断控
制。它负责管理映射到GPIO 引脚上的外中断和片内几个集成外设的中断
(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及软件中断。其输出最终被映射到NVIC 的相应通道。因此,配置EXTI 中断的过程必然包含对
NVIC 的配置,例如下面配置EXTI0 的过程,就要首先配置EXTI 控制器(使
能相应的中断线,选择中断/事件模式,触发边沿极性),然后再配置NVIC 控
制器(EXTI0 映射在NVIC 上的通道号,中断优先级,中断屏蔽状态):
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // or RisingEXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;// EXTI0_IRQn is defined in stm32f10x.hNVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
EXTI0_IRQn 的值,其实就是EXTI0 中断向量在中断向量表中的位置
(STM32 技术参考手册中断向量表Position 栏中的数值)