外部中止引脚装备初始化:以PA0为例阐明
1、外设端口时钟翻开
RCC->APB2ENR|=1<<2; //使能PORTA时钟
2、端口设置为输入
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
GPIOA->CRL|=0X00000008;
3、端口挑选上拉/下拉方法
GPIOA->ODR&=0xFFFFFFFE; //A0默许下拉
4、中止触发方法挑选
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
5、嵌套向量中止操控(抢占优先级,呼应优先级,组)
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2
中止服务程序
以PA0外部中止阐明
处理完之后要铲除线上的中止标志位
void EXTI0_IRQHandler(void)//外部中止0服务程序
{
delay_ms(10);//消抖
if(KEY2==1) //按键2
{
LED0=!LED0;
LED1=!LED1;
}
EXTI->PR=1<<0; //铲除LINE0上的中止标志位
}