#include "exti.h"

#include "delay.h"


void exti_Init(void)
{
	 EXTI_InitTypeDef EXTI_InitStruct;
	 NVIC_InitTypeDef NVIC_InitStruct;
	 GPIO_InitTypeDef GPIO_InitStructure;
//   KEY_Init();//IO��ʼ��
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//�����ⲿ�ж�ʱ��
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//ʹ��GPIOBʱ��

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7|GPIO_Pin_9;//
	//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//��������
 	GPIO_Init(GPIOB, &GPIO_InitStructure);//��ʼ��GPIOB7
	 //io�����ж���ӳ�� 
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource7);//���ӵ��ж���7  GPIO7ֻ��ӳ�䵽�ж���4����
	EXTI_InitStruct.EXTI_Line=EXTI_Line7;//ȷ���ж���
	EXTI_InitStruct.EXTI_LineCmd=ENABLE;//ʹ��
	EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;//�ж�ģʽ
	EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;//xia���ش���
	EXTI_Init(&EXTI_InitStruct);//��ʼ�� 

	
	//io�����ж���ӳ�� 
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);//���ӵ��ж���9 
	EXTI_InitStruct.EXTI_Line=EXTI_Line9;//ȷ���ж���
	EXTI_InitStruct.EXTI_LineCmd=ENABLE;//ʹ��
	EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;//�ж�ģʽ
	EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;//xia���ش���
	EXTI_Init(&EXTI_InitStruct);//��ʼ�� 
	
	
	NVIC_InitStruct.NVIC_IRQChannel=EXTI9_5_IRQn;
/*
��Ҫ��ȷ���ǣ�PxN�ܽŹ����ⲿ�ж���EXTIN���ⲿ�ж�����EXTIN_IRQn
���жϷ���������EXTIN_IRQHandler��������Ҫע�����[9...5]
����EXTI9_5_IRQn��EXTI9_5_IRQHandler��[15...10]����EXTI15_10_IRQn��EXTI15_10_IRQHandler
*/
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;//ʹ��
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;//�ж������ȼ�
	NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
	NVIC_Init(&NVIC_InitStruct);//��ʼ��
}

void EXTI9_5_IRQHandler(void)
{
	if(EXTI_GetITStatus(EXTI_Line7)!=RESET) //PB7�ⲿ�ж�
	{

		 
   EXTI_ClearITPendingBit(EXTI_Line7);//����ж� ��־
 }else if(EXTI_GetITStatus(EXTI_Line9)!=RESET)
	{

		}
	  EXTI_ClearITPendingBit(EXTI_Line9);//����ж� ��־
	}