外部中断

Posted cgy601785959

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外部中断相关的知识,希望对你有一定的参考价值。

1.外部中断开启步骤

  a.初始化IO口为输入

    GPIO_Init();

  b.使能IO复用功能时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

  c.设置与中断线的映射关系    

    void GPIO_EXTILineConfig();

  d.初始化线上外部中断,设置出发条件

    EXTI_Init();

  e.配置中断函数,并使能中断

     NVIC_Init();

  f.编写中断服务函数

    EXTIx_IRQHandler();

  g.清除中断标志位   

    EXTI_ClearITPendingBit();

 

 

void EXTI_INIT()
{
    EXTI_InitTypeDef EXTI_Initstructe;  
    GPIO_InitTypeDef GPIO_Initstructe;
    NVIC_InitTypeDef NVIC_Initstructe;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    
    GPIO_Initstructe.GPIO_Pin=GPIO_Pin_5;
    GPIO_Initstructe.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_Initstructe.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIO_Initstructe);
    
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
    
    EXTI_Initstructe.EXTI_Line=EXTI_Line5;
    EXTI_Initstructe.EXTI_LineCmd=ENABLE;
    EXTI_Initstructe.EXTI_Mode=EXTI_Mode_Interrupt;
    EXTI_Initstructe.EXTI_Trigger=EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_Initstructe);
    
    NVIC_Initstructe.NVIC_IRQChannel=EXTI9_5_IRQn;
    NVIC_Initstructe.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Initstructe.NVIC_IRQChannelPreemptionPriority=2;
    NVIC_Initstructe.NVIC_IRQChannelSubPriority=2;
    NVIC_Init(&NVIC_Initstructe);

}

 

以上是关于外部中断的主要内容,如果未能解决你的问题,请参考以下文章

51单片机怎么设置外部中断?

如何让qemu产生外部中断并跳转到isr(裸机代码)

您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)

STM32CubeMX笔记--外部中断,使用按键KEY检测

汇编中的 AVR 外部中断触发

STM32Cubemx——外部中断