stm32f103rct6最多能同时使用多少个外部中断?

2019-08-17 09:50发布

在同一个板子上,stm32f103rct6最多可以连接使用多少个外部中断?EXTI0~4有独立的中断服务函数、EXTI5~9共用一个、EXTI10~14共用一个,那么怎么样使用尽可能多的外部中断,而且不会出现几个外部中断占用一个中断函数的情况呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
zhu2006
2019-08-18 04:47
回复【2楼】xuande:
---------------------------------
今天做了这样的实验 将PC6 C7 C8都连接一个按键作为外部中断输入端,结果出现这样的情况:按三个中的任意一个按键,都会进中断,但是进中断函数后  无法判断是哪个触发了中断,有时按PC6按键 结果程序跳进了if(EXTI_GetITStatus(EXTI_Line7) != RESET)这里 或者if(EXTI_GetITStatus(EXTI_Line8) != RESET)   请问这是什么问题?我的程序是不是哪里错了?  请有经验的大指点一下   谢谢
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource7);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);

   EXTI_InitStructure.EXTI_Line=EXTI_Line6|EXTI_Line7|EXTI_Line8;
   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
   EXTI_Init(&EXTI_InitStructure);   //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //使能按键所在的外部中断通道
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2, 
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; //子优先级1
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
   NVIC_Init(&NVIC_InitStructure); 

 void EXTI9_5_IRQHandler(void)
{
/*
delay_ms(10);   //消抖  
if(KEY0==0) {
LED0=!LED0;
}
   EXTI_ClearITPendingBit(EXTI_Line5);    //清除LINE5上的中断标志位  
*/
  if(EXTI_GetITStatus(EXTI_Line6) != RESET)
  {
  
 EXTI_ClearFlag(EXTI_Line6);
     EXTI_ClearITPendingBit(EXTI_Line6);

  }
  if(EXTI_GetITStatus(EXTI_Line7) != RESET)
  {
  
    EXTI_ClearFlag(EXTI_Line7);
    EXTI_ClearITPendingBit(EXTI_Line7);

  }
  if(EXTI_GetITStatus(EXTI_Line8) != RESET)
  {
  
EXTI_ClearFlag(EXTI_Line8);
    EXTI_ClearITPendingBit(EXTI_Line8);

  }

}

一周热门 更多>