嵌入式软件开发,逻辑陷阱记录篇

搞一个按键外部中断进行计时,下降沿触发,按键(PA)按下为0;

代码如下:

嵌入式软件开发,逻辑陷阱记录篇

嵌入式软件开发,逻辑陷阱记录篇

 

分析如下如果你不加上delay_ms(1);

程序就执行下来,等到 if 判断完成之后(假设PA刚好为0,即按下的时候),随即程序就去判断while的条件(这时候,你刚好松开手,即PA 为1 ,他就直接跳出去了 ,不执行为了里面的东西);

这时候加上一条语句 大大减少了while判断的比例,所以就不会那么凑巧了,不过依然有可能 发生。

 

所以开始思考更改代码:更新如下

 

嵌入式软件开发,逻辑陷阱记录篇

直接标志位进行判断就行了,当然也就不存在 PA 发生问题的情况,哈哈,改完感觉降智了...