美文网首页
外部中断

外部中断

作者: 恰似一碗咸鱼粥 | 来源:发表于2019-07-18 22:14 被阅读0次

    对于STM32F103来说,其含有16条中断线,每一个中断线与GPIOx.0~x.15对应起来,比方说中断线0对应GPIOA.0,GPIOB.0.....GPIOG.0。
    在库函数中,GPIO与中断线的映射函数为GPIO_EXTILineConfig(),例如GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2)表示将E口与第二条中断线相连,即GPIOE.2。
    接下来初始化参数,通过EXTI_Init(关于init的structure的指针),参数的数据类型为EXIT_InitTypeDef*,它有四个参数要设置,分别是中断线的标号EXTI_Line,分别是EXIT_Line0~15,第二个是中断模式,第三个是触发方式,分别是下降沿触发,上升沿触发或者任意电平触发,第四个参数是使能中断线。
    然后再设置中断的优先级,这个代码在串口中也有。
    接着编写中断服务函数,中断函数的名字已经事先定义过EXITx_IRQHandler,其中0-4一个中断线对应一个中断函数,5-9共用一个,10-15共用一个。在编写中断函数时经常用到EXTI_GetITStatus(EXIT_Line),用于判断这条线上是否发生了中断,另一个函数是用来清除中断标志位,一般用于中断函数结束前

    void EXTI3_IRQHandler(){
      if(EXTI_GetITStatus(EXTI_Line)!=RESET){//判断中断是否发生
        /*code*/
      EXTI_ClearITPendingBit(EXTI_Line3);//清除中断标志位
      }
    }
    

    所以使用一个中断的步骤为
    (1)初始化IO口
    (2)开启AFIO时钟
    (3)设置IO口与中断线的映射关系
    (4)初始化线上中断,设置触发条件
    (5)配置中断分组(NVIC),并使能中断
    (6)编写中断函数

    相关文章

      网友评论

          本文标题:外部中断

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