外部中断同时可以有多少路?

2019-08-13 22:27发布

     0~4引脚有独立中断线,5~9共用一条中断线,10~15共用一条中断线,那么问题来了,如果我要同时用到5,6,7作为外部中断I/O怎么配置中断呢,怎么写中断服务函数呢?求大神不吝赐教!谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
ADS1993
2019-08-14 00:51
[mw_shl_code=c,true]void EXTI9_5_IRQHandler(void)
{

if(EXTI_GetITStatus(EXTI_Line5) != RESET) //确保是否产生了EXTI Line中断
    {
          EXTI_ClearITPendingBit(EXTI_Line5); //清除标志
          EXTI_ClearFlag(EXTI_Line5);

      if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5) ==  1))
         {
         
         }
         
       }
      
else if(EXTI_GetITStatus(EXTI_Line6) != RESET) //确保是否产生了EXTI Line中断
    {
          EXTI_ClearITPendingBit(EXTI_Line6); //清除标志
          EXTI_ClearFlag(EXTI_Line6);

      if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6) ==  1))
         {
         
         }
         
       }
      
else if(EXTI_GetITStatus(EXTI_Line7) != RESET) //确保是否产生了EXTI Line中断
    {
          EXTI_ClearITPendingBit(EXTI_Line7); //清除标志
          EXTI_ClearFlag(EXTI_Line7);

      if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7) ==  1))
         {
         
         }

       }
      
      
else if(EXTI_GetITStatus(EXTI_Line8) != RESET) //确保是否产生了EXTI Line中断
    {
          EXTI_ClearITPendingBit(EXTI_Line8); //清除标志
          EXTI_ClearFlag(EXTI_Line8);

      if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8) ==  1))
         {
         
         }
         
       }
      
      
else if(EXTI_GetITStatus(EXTI_Line9) != RESET) //确保是否产生了EXTI Line中断
    {
          EXTI_ClearITPendingBit(EXTI_Line9); //清除标志
          EXTI_ClearFlag(EXTI_Line9);

      if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_9) ==  1))
         {
         
         }
         
       }      
}[/mw_shl_code]

一周热门 更多>