#include "Bsp_Exti.h"

static void EXTI_NVIC_Config(void)
{
	
	//配置KEY1
	NVIC_InitTypeDef NVIC_InitStruct;	//定义一个EXTI_InitTypeDef类型的结构体
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	NVIC_InitStruct.NVIC_IRQChannel=KEY1_INT_EXTI_IRQ;	//选用中断源0
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;	//配置主优先级
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;		//配置次优先级
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;		//使能总中断
	NVIC_Init(&NVIC_InitStruct);				//初始化NVIC
	
	//配置KEY2
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	NVIC_InitStruct.NVIC_IRQChannel=KEY2_INT_EXTI_IRQ;	//选用中断源0
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;	//配置主优先级
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;		//配置次优先级
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;		//使能总中断
	NVIC_Init(&NVIC_InitStruct);
	
}
	

void EXIT_Key_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;			//定义一个GPIO_InitTypeDef类型的结构体
	
	EXTI_InitTypeDef EXTI_InitStruct;			//定义一个EXTI_InitTypeDef类型的结构体
	
	//配置中断优先级
	EXTI_NVIC_Config();
	
	//KEY1配置
	
	//初始化GPIO
	RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE);	//开启GPIO时钟				
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;	//设置引脚模式为通用浮空输出 	
	GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN;		//初始化要控制的引脚
	GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStruct);	//选择要控制的引脚
	
	//初始化EXTI
	GPIO_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE, KEY1_INT_EXTI_PINSOURCE);   //选择输入线，选择A端口，0引脚
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);                                  //使能AFIO输入线
	
	//初始化EXTIO结构体
	EXTI_InitStruct.EXTI_Line=KEY1_INT_EXTI_LINE;			//定义外部中断0
	EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;			//定义模式为中断模式
	EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;		              //定义触发位上升沿
	EXTI_InitStruct.EXTI_LineCmd=ENABLE;			//使能中断屏蔽寄存器
	EXTI_Init(&EXTI_InitStruct);				//初始化EXTI
	
	
/*--------------------------KEY2 配置------------------*/
 /* 选择按键用到的 GPIO */
 GPIO_InitStruct.GPIO_Pin = KEY2_INT_GPIO_PIN;
 /* 配置为浮空输入 */
 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStruct);

/* 选择 EXTI 的信号源 */
GPIO_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE, \
 KEY2_INT_EXTI_PINSOURCE);
 EXTI_InitStruct.EXTI_Line = KEY2_INT_EXTI_LINE;

 /* EXTI 为中断模式 */
 EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
 /* 下降沿中断 */
 EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
 /* 使能中断 */
 EXTI_InitStruct.EXTI_LineCmd = ENABLE;
 EXTI_Init(&EXTI_InitStruct);
	
	
}
