dengdc 发表于 2022-7-9 10:31

产生不同的中断

板子上的按键KEY2和KEY3对应的是PF11和PC13管脚,都是对应的EXTI15_10_IRQHandler中断,怎么样才能按下KEY2和KEY3产生不同的中断呢???求分享啊~~~~~~~~

zhenykun 发表于 2022-7-9 10:34

不知道LZ在做什么样的应用,我之前遇到这个问题的解决方法就是在IRQHandler里面看到底是key2还是key3导致的中断,再分别调用key2跟key3的函数。

jiaxw 发表于 2022-7-9 10:37

我认为三极管不能导通

heweibig 发表于 2022-7-9 10:40


if (EXTI_GetITStatus(EXTI_Line11) != RESET )
      {
                EXTI_ClearITPendingBit(EXTI_Line11);
                //key2                                 
      }
      else if (EXTI_GetITStatus(EXTI_Line13) != RESET )
      {
                EXTI_ClearITPendingBit(EXTI_Line13);
                //key3         
      }

zwll 发表于 2022-7-9 10:48

按键都用中断,是低功耗设备吗?

dengdc 发表于 2022-7-9 10:51

按键只按一次产生一个中断,使LED灯亮,这时我想用延时函数,使得LED灯亮100ms,灭100ms,这样循环,该怎么操作呢?我知道在中断里面延时,长时间不跳出中断肯定是不好的,但是就只是想实现这样的功能,有什么好的办法呢?

heweibig 发表于 2022-7-9 10:54

检测引脚变化,这个功能做的不太理想

jlyuan 发表于 2022-7-9 10:56

中断里面延时,这样的程序,基本是没的用的,中断就是硬件的任务,切换,你一直霸占CPU不释放,你的程序框架就是一根筋,动一个牵动一身。简单的东西的好好想想。

stly 发表于 2022-7-9 11:00

有一个寄存器是控制中断来源的

pangb 发表于 2022-7-9 11:03

中断里面延时是大忌

zhenykun 发表于 2022-7-9 11:05

进入中断后,通过位操作判断到底是哪个管脚的中断。

yszong 发表于 2022-7-9 11:09


if (EXTI_GetITStatus(EXTI_Line11) != RESET )
      {
                EXTI_ClearITPendingBit(EXTI_Line11);
                //key2                                 
      }
      else if (EXTI_GetITStatus(EXTI_Line13) != RESET )
      {
                EXTI_ClearITPendingBit(EXTI_Line13);
                //key3         
      }

yszong 发表于 2022-7-9 11:13

检测引脚电平变化

renyaq 发表于 2022-7-9 11:15

进入中断后再判断啊。

zwll 发表于 2022-7-9 11:31

中断里面不要延时,占着CPU不干活

dingy 发表于 2022-7-9 11:33

判断是哪个引脚的就可以啊

pengf 发表于 2022-7-9 11:35

在中断函数里边判断标志位

xxrs 发表于 2022-7-9 11:37

用if语句判断一下是哪个引脚就可以呀

jiahy 发表于 2022-7-9 11:40

在中断函数里边看看 io口的状态就知道啦

spark周 发表于 2022-7-9 11:44

判断io口标志位
页: [1] 2
查看完整版本: 产生不同的中断