码迷,mamicode.com
首页 > 其他好文 > 详细

EXTI中断程序实例

时间:2015-04-15 14:58:13      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:stm32 exti

程序功能:使用EXTI中断实现按键点亮LED。按键一次,LED状态翻转一次。

在程序中开启GPIOE.2的中断线2。并设置为下降沿触发中断。

//exti.h

#ifndef __EXTI_H__
#define __EXTI_H__

#include "stm32f10x.h"
#include "MyTime.h"
#include "bitband.h"

void EXTI_Configuration(void);
void EXTI2_IRQHandler(void) ;

#endif

//exti.c

#include "exti.h"
#include "key.h"

void EXTI_Configuration(void)
{
	EXTI_InitTypeDef EXTI_InitStruct;
	NVIC_InitTypeDef NVIC_InitStruct;
	//1)初始化 IO 口为输入
	KEY_Configuration();
	
	//2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);     
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);
	
	//3)初始化线上中断,设置触发条件等
	EXTI_InitStruct.EXTI_Line = EXTI_Line2;
	EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_InitStruct.EXTI_LineCmd = ENABLE;
	
	EXTI_Init(&EXTI_InitStruct);
	
	//4)配置中断分组(NVIC),并使能中断		
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitStruct.NVIC_IRQChannel = EXTI2_IRQn; 
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	
	NVIC_Init(&NVIC_InitStruct);
}
	
//5)编写中断服务函数。 
void EXTI2_IRQHandler(void) 
{ 
        MyDelay_ms(10);                                            //消抖 
        if(KEY2==0)                                                //按键KEY2 
        {     
					LED0=!LED0; 
        }                 
        EXTI_ClearITPendingBit(EXTI_Line2);    //清除 LINE2 上的中断标志位      
}


//main.c

#include "MyTime.h"
#include "exti.h"

int main(void)
{
	MySysTick_Init();
	//点亮灯
	GPIO_Configuration();
	
	EXTI_Configuration();	
	
	while(1);
	
}

注:使用IO 口外部中断的一般步骤: 

1)初始化 IO 口为输入。 //KEY_Configuration
2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。 
3)初始化线上中断,设置触发条件等。 
4)配置中断分组(NVIC),并使能中断。 
5)编写中断服务函数。


本文出自 “whatever957” 博客,请务必保留此出处http://whatever957.blog.51cto.com/6835003/1632909

EXTI中断程序实例

标签:stm32 exti

原文地址:http://whatever957.blog.51cto.com/6835003/1632909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!