STM32
直播中

王莉

7年用户 1287经验值
私信 关注
[问答]

STM8外部中断不响应是为什么?怎么解决?

STM8外部中断不响应是为什么?怎么解决?

回帖(1)

张建

2021-11-18 14:45:43
  坑哥在编写STML152K4的一个简单的按键输入中断时被迷惑了半天,做一个总结帮助后人填坑。
  BUG坑现象

void key_init(void) {
       
        GPIO_Init(POWER_KEY, GPIO_Mode_In_FL_IT);
        EXTI_DeInit();
        EXTI_SetPinSensitivity(EXTI_Pin_4, EXTI_Trigger_Falling);//下降沿触发
}
上面是一个按键外部中断初始化的代码,看似没什么问题。但是调试时候问题出现了,稍微碰一下按键中断在中断函数里不断进行触发,即使请了外部中断标志位 还是不停触发。通过调试发现需要在按键初始化前先关闭总中断 然后在开启总中断。
  
void key_init(void) {
       
        disableInterrupts();
        GPIO_Init(POWER_KEY, GPIO_Mode_In_FL_IT);
        EXTI_DeInit();
        EXTI_SetPinSensitivity(EXTI_Pin_4, EXTI_Trigger_Falling);
        enableInterrupts();
}
通过上面配置,还是发现当IO配置成浮空输入时候因为没有固定的电平会经常误触发,因此建议使用IO配置成GPIO_Mode_In_PU_IT这种模式给予固定的上拉电平。
  在看一下硬件上面的BUG问题

  下面是客户的一个板子的原理图按键,我在实际使用时IO配置成输入上拉中断模式发现死活不能进入中断函数。后面经过分析问题出在了这个电阻上面,当IO配置成上拉模式时候此处电阻过大(可能客户为了低功耗不得而知)导致得不到低电平了。具体可以看下STM8L手册配置成IO上拉时官方给接电阻是多少,结合此处的电阻进行合理选择达到功耗最低。此处坑哥后来改成了4.7K可以正常使用。

  

  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分