GPIO外部中斷

在STM32中,其每個外設均可以產生中斷。函數

中斷分爲分爲code

①系統異常,內核blog

內科中斷

②外部中斷,外設ip

NVIC(Nested Vector Interrupt Controller ):嵌套向量中斷控制器,屬於內核外設,管理着包括內核片和片上全部外設的終端相關功能。it

core_cm3.h與misc.h有相關函數io

野火指南者內核中斷有10個,外設中斷有60個。配置

由NVIC->IPRx來控制終端

中斷優先級分組

static void EXTI_NVIC_Config(void)im

{d3

NVIC_InitTypeDef NVIC_InitStruct;//配置NVIC結構體NVIC_InitTypeDef;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);設置優先級分組

NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ;

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//選擇主優先級

NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//選擇次優先級

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStruct);//將寫好的結構體寫入到初始化函數中

}

選擇NVIC的中斷線,這裏選擇的是外部中斷0,外部中斷有20個,前16個爲GPIO中斷

EXTI0_IRQn

EXTI1_IRQn

EXTI2_IRQn

EXTI3_IRQn

EXTI4_IRQn

EXTI9_5_IRQn

EXTI15_10_IRQn

配置完NVIC接着配置EXTI_InitTypeDef,NVIC像一箇中斷大門而EXIT就像箇中斷的小門

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //打開時鐘,選擇複用模式 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //設置外部中斷源

EXTI_InitStruct.EXTI_Line = EXTI_Line0;//選擇外部中斷線0

EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;選擇外部觸發模式

EXTI_InitStruct.EXTI_Trigger =EXTI_Trigger_Rising;選擇上拉沿觸發

EXTI_InitStruct.EXTI_LineCmd = ENABLE;使能

EXTI_Init(&EXTI_InitStruct);

相關文章
相關標籤/搜索