STM32 EXTI外部中斷
1、外設(shè)端口時鐘打開
RCC->APB2ENR|=1<<2; //使能PORTA時鐘
2、端口設(shè)置為輸入
GPIOA->CRL&=0XFFFFFFF0;//PA0設(shè)置成輸入
GPIOA->CRL|=0X00000008;
3、端口選擇上拉/下拉方式
GPIOA->ODR&=0xFFFFFFFE; //A0默認(rèn)下拉
4、中斷觸發(fā)方式選擇
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿觸發(fā)
5、嵌套向量中斷控制(搶占優(yōu)先級,響應(yīng)優(yōu)先級,組)
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //搶占2,子優(yōu)先級2,組2
中斷服務(wù)程序
以PA0外部中斷說明
處理完之后要清除線上的中斷標(biāo)志位
void EXTI0_IRQHandler(void)//外部中斷0服務(wù)程序
{
delay_ms(10);//消抖
if(KEY2==1) //按鍵2
{
LED0=!LED0;
LED1=!LED1;
}
EXTI->PR=1<<0; //清除LINE0上的中斷標(biāo)志位
}
評論