野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3428|回复: 1

指南者用户在EXTI(第2节)遇到的问题

[复制链接]
发表于 2023-4-19 14:20:44 | 显示全部楼层 |阅读模式
1.板子:最小系统板(STM32F103C8T6)+自制外围电路
2.引脚说明:
PB8:KEY1(配置浮空输入)
PB7:LED1(配置推挽输出)

PC13:KEY2(配置浮空输入)
PC14:LED2(配置推挽输出)

3.想要实现的功能:
KEY1按钮按下,LED1反转一次并且数码管加1(自制外围电路中含有数码管)
KEY2按钮按下,LED2反转一次并且数码管减1(自制外围电路中含有数码管)

4.实际现象:
复位:LED1,LED2均灭,数码管显示“00”

第一次按KEY1按钮,LED1亮起,数码管加1,显示“01”
第二次按KEY1按钮,LED1保持点亮,数码管加2,显示“03”
第三次按KEY1按钮,LED1保持点亮,数码管加2,显示“05”
...(后面数码管每次加2,LED保持点亮)

复位:LED1,LED2均灭,数码管显示“00”

第一次按KEY2按钮,LED2亮起,数码管减1,显示“99”
第二次按KEY2按钮,LED2保持点亮,数码管减2,显示“97”
第三次按KEY2按钮,LED2保持点亮,数码管减2,显示“95”
...(后面数码管每次减2,LED保持点亮)


对应中断代码如下(左图为KEY1中断函数,右图为KEY2中断函数):
野火论坛202304191402481373..png

5.尝试解决方案:
将LED1放在KEY2中断函数中,LED2放在KEY1中断函数中。

复位:LED1,LED2均灭,数码管显示“00”

第一次按KEY1按钮,LED2亮起,数码管加1,显示“01”
第二次按KEY1按钮,LED2熄灭,数码管加1,显示“02”
第三次按KEY1按钮,LED2亮起,数码管加1,显示“02”
...(后面数码管每次加1,,LED亮灭翻转)



复位:LED1,LED2均灭,数码管显示“00”

第一次按KEY2按钮,LED2亮起,数码管减1,显示“99”
第二次按KEY2按钮,LED2熄灭,数码管减1,显示“98”
第三次按KEY2按钮,LED2亮起,数码管减1,显示“97”
...(后面数码管每次减1,LED亮灭翻转)




6.思考及疑问

猜想:从数码管变化两次猜想,是不是因为操作ODR寄存器导致多进入一次中断?导致LED亮灭翻转两次(相当于保持)
疑问:是什么原因导致进入两次中断?还是其他什么原因导致?

恳请各位前辈或野火老师解答,谢谢了!












野火论坛202304191404148815..png
回复

使用道具 举报

发表于 2023-4-26 09:01:15 | 显示全部楼层
按键上有没有做硬件消抖,在进中断里面再加一点延时后再读取按键电平程序上也消抖试
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 11:59 , Processed in 0.043913 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表