STM32 KEIL if满足条件却无法进入
今天调试的时候发现一个很不能理解的事情,if语句满足条件却无法进入,目前已经成功解决,在这里自己记录一下,也希望能够帮助更多的同学。

通过分析最上面的汇编,发现没有执行判断。个人猜测:应该是编译器认为此处是死循环,没有考虑中断置1的情况给优化了,这里给出两种解决方法,推荐使用第二种。
解决方法1(不推荐):


用此方法的话,把代码发给其他人进行编译,就需要别人也要对编译器进行同样的设置,才不会出现这样的问题。
解决方法2:
所用变量定义时加入关键字:volatile

重新编译并烧录进ARM发现能够正常执行程序,解决完问题了。
有更好的解决方法也可以进行交流讨论。