美文网首页
stm32 EXTI(外部中断)

stm32 EXTI(外部中断)

作者: David_Rao | 来源:发表于2020-03-08 19:53 被阅读0次

外部中断/事件控制器(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

EXTI_Init

EXTI_Line

EXTI_Mode

EXTI_Trigger

EXTI_LineCmd

EXTI_LineCmd 描述
ENABLE 使能
DISABLE 失能

EXTI_StructInit

中断函数

对应中断函数名

EXTI_GetFlagStatus & EXTI_ClearFlag

EXTI_GetITStatus & EXTI_ClearITPendingBit

相关文章

  • stm32 EXTI(外部中断)

    外部中断/事件控制器(EXTI) 寄存器描述IMR中断屏蔽寄存器EMR事件屏蔽寄存器RTSR上升沿触发选择寄存器F...

  • STM32一文通(6) 外部中断

    一. 外部中断/事件控制器 (EXTI) 什么是中断?中断就是打断程序执行顺序的外部输入什么是事件?事件是外部输入...

  • 9.22嵌入式知识点总结

    1.GPIO复用绑定外部硬件 2.EXTI绑定给外部中断线 3.NVIC中断:配置优先级组,初始化 4.先判断中断...

  • 2017.12.15学习总结

    下午学习了中断和外部中断,其中NVIC控制和EXTI控制,NVIC给每个中断赋予先占优先级和次占优先级,NVIC...

  • STM32外部中断

    STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处。GPIO 的管脚 GP...

  • STM32之外部中断

    关于stm32 的外部引脚中断的简单应用;用来添加一个外部引脚中断;更改IRQ_Handler函数可以实现不同的中...

  • stm32 外部中断

    首先,要理清楚,什么是中断。 中断的意思是,比如CPU是主角,他正在工作,忽然间GPIO口跟他讲,这件事需要他来做...

  • 按键与中断处理

    NVIC中断工作原理 cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。stm32中...

  • 9.25嵌入式知识点总结

    1.先硬件初始化再写应用程序 2.bsp 板极硬件 3.EXTI外部中断 4.NVIC中断优先级 5.VAL为重载值

  • EXTI

    EXTI:External interrupt/event controller 中断流程: 输入线(软件中断事件...

网友评论

      本文标题:stm32 EXTI(外部中断)

      本文链接:https://www.haomeiwen.com/subject/eaujdhtx.html