stm32之IO口外部中断配置 |
您所在的位置:网站首页 › io口与外部中断的应用 › stm32之IO口外部中断配置 |
从PA~PG每个端口都有15个管脚,所有端口的管脚从零到15对应的中断线路都是相同的,它们都可以独立的引发外部中断。 配置外部中断有一定的规定动作,可总结为四步,下面就随便用一个IO口加以说明(PG2): 1、配置相应时钟和相关的GPIO管脚。 void KIN2_init( void ) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOG, ENABLE ); RCC_AHB1PeriphClockCmd( RCC_APB1Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init( RCC_AHB1Periph_GPIOG, &GPIO_InitStructure ); } 2、EXTI配置。动作主要有:选择中断源,清除中断标志,触发模式... void EXTI_G2_Init(void) { EXTI_InitTypeDef EXTI_InitStructure; GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource2); EXTI_InitStructure.EXTI_Line = EXTI_Line2; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); } 3、NVIC配置。指定中断信息(主从优先级,中断通道..) void NVIC_G2_Init(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 抢占优先级4级 子优先级4级 NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } 4、编写中断服务子程序。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |