#include "interrupt.h"
extern int select_time;
void interrupt(void){
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
// SYSCFG_EXTICR2(2)=1;
SYSCFG_EXTILineConfig( EXTI_PortSourceGPIOA, EXTI_PinSource0);
SYSCFG_EXTILineConfig( EXTI_PortSourceGPIOE, EXTI_PinSource2);
SYSCFG_EXTILineConfig( EXTI_PortSourceGPIOE, EXTI_PinSource3);
SYSCFG_EXTILineConfig( EXTI_PortSourceGPIOE, EXTI_PinSource4);
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line=EXTI_Line0|EXTI_Line2|EXTI_Line3|EXTI_Line4;
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStruct);
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel= EXTI0_IRQn ;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=5;
NVIC_InitStruct.NVIC_IRQChannelCmd= ENABLE;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel= EXTI2_IRQn ;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel= EXTI3_IRQn;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel= EXTI4_IRQn;
NVIC_Init(&NVIC_InitStruct);
}
void EXTI0_IRQHandler(){
if(EXTI_PR(0)==1){
delay_us(5000);
// PF_ODR(9)=!PF_ODR(9);
PF_ODR(8)=0;
EXTI_PR(0)=1;
}
extern int flag;
flag=flag-1;
if(flag<0){
flag=0;
}
}
void EXTI2_IRQHandler(){
if(EXTI_PR(2)==1){
delay_us(5000);
// PF_ODR(10)=!PF_ODR(10);
select_time++;
EXTI_PR(2)=1;
}
}
void EXTI3_IRQHandler(){
if(EXTI_PR(3)==1){
delay_us(5000);
// PE_ODR(13)=!PE_ODR(13);
extern RTC_TimeTypeDef RTC_AlarmTime;
switch (select_time){
case 0: RTC_AlarmTime.RTC_Seconds++; if(RTC_AlarmTime.RTC_Seconds>=60){RTC_AlarmTime.RTC_Seconds=0;} break;
case 1: RTC_AlarmTime.RTC_Minutes++; if(RTC_AlarmTime.RTC_Minutes>=60){RTC_AlarmTime.RTC_Minutes=0;} break;
case 2: RTC_AlarmTime.RTC_Hours++; if(RTC_AlarmTime.RTC_Hours>=24){RTC_AlarmTime.RTC_Hours=0;} break;
case 3: select_time=0;
}
EXTI_PR(3)=1;
}
}
void EXTI4_IRQHandler(){
if(EXTI_PR(4)==1){
delay_us(5000);
// PE_ODR(14)=!PE_ODR(14);
EXTI_PR(4)=1;
}
}