stm32 EXTI(外部中断)

外部中断/事件控制器(EXTI)

寄存器 描述
IMR 中断屏蔽寄存器
EMR 事件屏蔽寄存器
RTSR 上升沿触发选择寄存器
FTSR 下降沿触发选择寄存器
SWIR 软件中断事件寄存器
PR 挂起寄存器
void EXTI8_IPRT()
{
    RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
    EXTI->IMR = EXTI_IMR_MR8;
    EXTI->RTSR = EXTI_RTSR_TR8;
    AFIO->EXTICR[2] = AFIO_EXTICR3_EXTI8_PA;
    NVIC_EnableIRQ(EXTI9_5_IRQn);
}

EXTI初始化

void EXTI4_Init(){
    /* 初始化结构体定义 */
    GPIO_InitTypeDef GPIO_InitStructure;    //GPIO初始化结构体
    EXTI_InitTypeDef  EXTI_InitStruct;      //EXTI初始化结构体
    NVIC_InitTypeDef NVIC_InitStructure;    //NVIC初始化结构体
    
    /* 初始化结构体定义 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//启动GPIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//配置端口中断需要启用复用时钟
    
    /* 端口(GPIO)设置 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;       //PA4
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //上拉输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);          //初始化GPIOA
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);//定义PA4外部中断
    
    /* 中断向量控制器(NVIC)设置 */
    NVIC_InitStruct.NVIC_IRQChannel=EXTI4_IRQn;     //中断线   
    NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;      //使能中断
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级2
    NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;   //子优先级2
    NVIC_Init(& NVIC_InitStruct);                   //初始化NVIC
    
    EXTI_InitStruct.EXTI_Line=EXTI_Line4;           //定义中断线
    EXTI_InitStruct.EXTI_LineCmd=ENABLE;            //中断使能
    EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;  //中断模式为 中断
    EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发
    EXTI_Init(& EXTI_InitStruct);                   //初始化EXTI
}

u8 g_u8Flag=0;//定义全局变量

/* EXTI4中断函数 */
void  EXTI4_IRQHandler(void){
    if(EXTI_GetITStatus(EXTI_Line4)!=RESET){//判断某个线上的中断是否发生
        g_u8Flag=1;//标志位置1
        EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE上的中断标志位
    }     
}

EXTI_DeInit

stm32 EXTI(外部中断)_第1张图片

EXTI_Init

stm32 EXTI(外部中断)_第2张图片

EXTI_Line

stm32 EXTI(外部中断)_第3张图片

EXTI_Mode

EXTI_Trigger

EXTI_LineCmd

EXTI_LineCmd 描述
ENABLE 使能
DISABLE 失能
stm32 EXTI(外部中断)_第4张图片

EXTI_StructInit

stm32 EXTI(外部中断)_第5张图片

中断函数

对应中断函数名

stm32 EXTI(外部中断)_第6张图片

EXTI_GetFlagStatus & EXTI_ClearFlag

stm32 EXTI(外部中断)_第7张图片
stm32 EXTI(外部中断)_第8张图片

EXTI_GetITStatus & EXTI_ClearITPendingBit

stm32 EXTI(外部中断)_第9张图片
stm32 EXTI(外部中断)_第10张图片

你可能感兴趣的:(stm32 EXTI(外部中断))