
#include "stm32f4xx.h"
void delay(void)
{
uint32_t i=0x2000000;
while(i--);
}
void delay1(void)
{
uint32_t i=0x0A;
while(i--);
}
//ÊäÈëÒý½Å
void keyInInit(void)
{
GPIO_InitTypeDef GPIO_InitStructureIn;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitStructureIn.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructureIn.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructureIn.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructureIn.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOE,&GPIO_InitStructureIn);
}
//Êä³öÒý½Å
void keyOutInit(void)
{
GPIO_InitTypeDef GPIO_InitStructureOut;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructureOut.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructureOut.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructureOut.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructureOut.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructureOut.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA,&GPIO_InitStructureOut);
}
void EXTI3_IRQHandler(void)
{
delay1();
//if(EXTI_GetITStatus(EXTI_Line3) != RESET)
//{
//GPIO_ResetBits(GPIOA,GPIO_Pin_7);
//GPIO_SetBits(GPIOA,GPIO_Pin_6);
//}
if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_6);
GPIO_SetBits(GPIOA,GPIO_Pin_7);
delay();
GPIO_ResetBits(GPIOA,GPIO_Pin_7);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
}
if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_6);
GPIO_SetBits(GPIOA,GPIO_Pin_7);
delay();
GPIO_ResetBits(GPIOA,GPIO_Pin_7);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
}
EXTI_ClearITPendingBit(EXTI_Line3);
}
int main(void)
{
//ÖжÏÏà¹Ø½á¹¹Ìå
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//ʹÄÜϵͳÅäÖÃʱÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
keyInInit();
keyOutInit();
//½«PE3ºÍEXTI3Á´½ÓÔÚÒ»Æð
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource3);
EXTI_InitStructure.EXTI_Line=EXTI_Line3;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
