开发板上的GPIO12引脚和按键KEY连接,按下KEY后,GPIO12为低电平
GPIO67引脚与LED灯相连,GPIO67输出低电平时,LED灯亮,输出高电平时,LED不亮。
我想通过中断方式用KEY控制LED灯的亮灭,设置为下降沿触发。
我用示波器两个引脚的波形,发现了一些异常,具体描述见附件word。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
开发板上的GPIO12引脚和按键KEY连接,按下KEY后,GPIO12为低电平
GPIO67引脚与LED灯相连,GPIO67输出低电平时,LED灯亮,输出高电平时,LED不亮。
我想通过中断方式用KEY控制LED灯的亮灭,设置为下降沿触发。
我用示波器两个引脚的波形,发现了一些异常,具体描述见附件word。
你好,跟你确认一下。抛开KEY和LED,单从GPIO角度来说是否是:
GPIO12配置为输入,GPIO67配置为输出,GPIO的上升沿触发GPIO67进行翻转?
这样的话需要给出一下GPIO配置代码和执行翻转的代码,看一下具体如何配置的
看了一下代码没看出有什么问题,唯一不确定的是LED2_TOGGLE是怎么写的。
另外,出现一次两次三次翻转的概率是随机的吗?有没有判断过是否跟摁键的速度有关?
从你抓取的示波器图形看,GPIO67电平翻转是在GPIO12上升沿时立刻发生,然后20ms后又发生一次。
中断程序中流程是:
1.按键按下时GPIO12下降沿进入中断
2.延时等待20ms
3.等待按键被松开,不松开就一直等待,松开后GPIO12是高电平
4.GPIO67电平翻转
5.清除中断标志
参考帖子:
中断重入? - C2000︎ 微控制器论坛 - C2000 微控制器 - E2E
设计支持 (ti.com)
CPU一旦进入某个外设中断程序,cpu会自动清除对应该中断PIEIFR ,然后在进入中断服务程序后马上使能中断(EINT)
你可以参考一下。
目前你所遇到的情况我也不能从逻辑上解释清除
键盘扫描建议单独写成函数后循环调用,里边可以处理防抖
中断程序不要做任何延时动作