STM8外部中断不响应

STM8外部中断不响应

坑哥在编写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可以正常使用。
在这里插入图片描述

对坑哥对软文感兴趣可以关注支持下,坑哥将会继续努力填坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值