单片机
返回首页

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

2025-10-23 来源:bilibili

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

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

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

解决方法1(不推荐):

设置完后,重新编译整个工程文件

可见调小优化,汇编正常,程序能够正常进入if内部

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


解决方法2:

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

    

增加了关键字 volatile


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


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章