stm32之IO口外部中断配置

您所在的位置:网站首页 io口与外部中断的应用 stm32之IO口外部中断配置

stm32之IO口外部中断配置

2023-11-23 09:58| 来源: 网络整理| 查看: 265

从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