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

2019-08-13 22:27发布

     0~4引脚有独立中断线,5~9共用一条中断线,10~15共用一条中断线,那么问题来了,如果我要同时用到5,6,7作为外部中断I/O怎么配置中断呢,怎么写中断服务函数呢?求大神不吝赐教!谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
ADS1993
1楼-- · 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]
17779131997
2楼-- · 2019-08-14 01:57
ADS1993 发表于 2017-9-22 11:09
[mw_shl_code=c,true]void EXTI9_5_IRQHandler(void)
{

谢谢解释,这个了解,但是优先级呢?那5~9是用一个通道的吧,怎么整呢
lanlzp
3楼-- · 2019-08-14 06:55
17779131997 发表于 2017-9-27 20:59
谢谢解释,这个了解,但是优先级呢?那5~9是用一个通道的吧,怎么整呢

if else 决定处理顺序,硬件不能提供优先级判断
17779131997
4楼-- · 2019-08-14 08:16
lanlzp 发表于 2017-9-27 22:40
if else 决定处理顺序,硬件不能提供优先级判断

了解了,多谢

一周热门 更多>