void EXTIX_Init(void) { KEY_Init(); //配置键盘中断触发方式 Ex_NVIC_Config(GPIO_E,2,FTIR); Ex_NVIC_Config(GPIO_E,3,FTIR); Ex_NVIC_Config(GPIO_E,4,FTIR);//上拉,默认高电平,下降沿触发 Ex_NVIC_Config(GPIO_A,0,RTIR);//下拉,默认低电平,上升沿触发 //设置中断分组 MY_NVIC_Init(3,2,EXTI2_IRQn,2);//抢占优先级为3,子优先级为2,中断分组为第2组[2位抢占优先级(有4个抢占优先级),2位响应优先级(有4个)] MY_NVIC_Init(2,2,EXTI3_IRQn,2); MY_NVIC_Init(1,2,EXTI4_IRQn,2); MY_NVIC_Init(0,2,EXTI0_IRQn,2); }
//外部中断初始化程序 //初始化PA0,PA13,PA15为中断输入. void EXTIX_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入 GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入 GPIOA->CRH|=0X80800000; GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉 GPIOA->ODR|=1<<15; //PA15上拉 Ex_NVIC_Config(GPIOA,0,RTIR); //上升沿触发 Ex_NVIC_Config(GPIOA,13,FTIR);//下降沿触发 Ex_NVIC_Config(GPIOA,15,FTIR);//下降沿触发 MY_NVIC_Init(2,2,EXTI0_IRQn,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,1,EXTI15_10_IRQn,2);//抢占2,子优先级1,组2 }
void EXTIX_Init(void) { JTAG_Set(JTAG_SWD_DISABLE);//turn off JTAG&SWD Ex_NVIC_Config(GPIO_B,0,0x03); //edge trigger MY_NVIC_Init(1,1,EXTI0_IRQChannel,2); }
//PA0 WKUP唤醒初始化 void WKUP_Init(void) { RCC->APB2ENR|=1<<2; //先使能外设IO PORTA时钟 RCC->APB2ENR|=1<<0; //开启辅助时钟 GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入 GPIOA->CRL|=0X00000008; Ex_NVIC_Config(GPIO_A,0,RTIR);//PA0上升沿触发 //(检查是否是正常开)机 if(Check_WKUP()==0)Sys_Standby(); //不是开机,进入待机模式 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);//抢占2,子优先级2,组2 }
//外部中断初始化程序 //初始化PA0,PA13,PA15为中断输入. void EXTIX_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD // GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入 // GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0FFFFFFF;//PA15设置成输入 GPIOA->CRH|=0X80000000; GPIOA->ODR|=1<<15; //PA15上拉 // Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发 // Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发 Ex_NVIC_Config(GPIO_A,15,RTIR);//下降沿触发 // MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2 }