关于STM32 中的外部中断EXIT的说明和如何启用

来源:互联网 发布:疯狂的美工助手破解版 编辑:程序博客网 时间:2024/05/01 19:49

一、EXTI 中断
     PA0,PB0,......PG0  共用一个中断标志 EXT0
     PA1,PB1,......PG1  共用一个中断标志 EXT1
     ...................................
     ...................................
     PA15,PA15,......PG15  共用一个中断标志 EXT15
     疑问:官方库函数有19条EXTI_Line,EXTI_Line0 --EXTI_Line18,多出来的3条在哪里?
              祥见 EXTI_InitTypeDef.EXTI_Line段落
二、在NVIC中:
     EXTI0--EXTI4各自有独立的IRQ_Channel,对应的中断服务函数是 voidEXTI(n)_IRQHandler(void),(n)=0--4。
     EXTI5--EXTI9共用一个IRQ_Channel,对应的中断服务函数是 voidEXTI9_5_IRQHandler(void)。
     EXTI10--EXTI15共用一个IRQ_Channel,对应的中断服务函数是 voidEXTI15_10_IRQHandler(void)。
三、如何启用EXTI中断
     1 .启动所需GPIOn_Pin及AFIO的RCC时钟:
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,RCC_APB2Periph_AFIO,ENABLE);
         !!!千万别忘记启动RCC_APB2Periph_AFIO!!!,否则管脚只能做普通高低电平来用。
     2.用GPIO_InitStructure(用GPIO_InitTypeDef预先定义一下)设置所需GPIO口的Pin,Speed,Mode,

         然后用GPIO_Init(GPIOn,&GPIO_InitStructure)来启用这些GPIO的Pin。
     3 .用GPIO的中断线控制函数启动指定GPIO的某个Pin
         GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource7);
     4 .初始化中断,类似初始化GPIO
         a)定义一个初始化的结构变量 EXTI_InitTypeDef EXTI_InitStructure;
            !!!这步应该在函数外预先声明名!!!
         b)输入该结构的成员值:EXTI_Line,EXTI_Mode,EXTI_Trigger,EXTI_LineCmd
         c)用EXTI_Init(&EXTI_InitStructure);完成初始化
         例:
             RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG| RCC_APB2Periph_AFIO , ENABLE );

            
            GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource7);

           
          EXTI_InitStructure.EXTI_Line = EXTI_Line7;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
四、可以用软件模拟一个EXTI中断的产生,命令如下:
         EXTI_GenerateSWInterrupt(EXTI_Line7);//产生EXTI_Line7的中断。

五、对应的中断服务函数在 "stm32f10x_it.c" 中

六、需用的 ".c" 文件有:

        stm32f10x_rcc.c

        stm32f10x_nvic.c

        stm32f10x_gpio.c

        stm32f10x_exti.c

        stm32f10x_it.c

 

0 0
原创粉丝点击