欢迎光临散文网 会员登陆 & 注册

STM32 KEIL if满足条件却无法进入

2022-12-28 15:30 作者:m蛋蛋发番茄  | 我要投稿

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

可以看到标志位已经置1了,一直运行却无法进入if语句里

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

解决方法1(不推荐):

设置完后,重新编译整个工程文件
可见调小优化,汇编正常,程序能够正常进入if内部

    用此方法的话,把代码发给其他人进行编译,就需要别人也要对编译器进行同样的设置,才不会出现这样的问题。

解决方法2:

    所用变量定义时加入关键字:volatile

    

增加了关键字 volatile

    重新编译并烧录进ARM发现能够正常执行程序,解决完问题了。

    有更好的解决方法也可以进行交流讨论。

STM32 KEIL if满足条件却无法进入的评论 (共 条)

分享到微博请遵守国家法律