1.明确要使哪个端口作为触发。(以PA0为例)
因为是PA0,所以应当打开外部中断线0.
代码如下: EXTI->IMR |= 1 << 0; //打开外部中断线0
2.设置触发方式:上升沿出发和下降沿出发可一起设置。任一边沿触发均可进入中断。
EXTI->RTSR |= 1 << 0;//上升沿触发
EXTI->FTSR |= 1 << 0;//下降沿触发
3.配置外部中断优先级
Set_NVICPriority(EXTI0_IRQn,2,2);
4.使能AFIO复用功能寄存器
RCC->APB2ENR |=1<<0;
前面我们已经打开了外部中断0,即我们用的是EXTI0,所以在AFIO_EXCR1中找。又因为我们要的是PA口,故给EXTI0[3...0]赋值0000.
AFIO->EXTICR[0] &= ~(0x0F << (0 * 4)); ///先清零
AFIO->EXTICR[0] |= 0x00<<4; //选择PA口
5.编写外部中断服务函数
void EXTI0_IRQHandler(void)
{
//
}