单片机卡死在while的原因

[复制链接]
118|4
 楼主 | 2018-2-11 22:21 | 显示全部楼层 |阅读模式
新手一枚,调试stm32串口中断时将标志位放在while循环里,即while(flag),当flag为0时发现程序仍然卡死在while循环这句,查资料发现原因:编译器优化导致的结果,如果要对一个变量每次都要读取值,那么需要在定义变量时加volatile,强制每次从内存直接加载这个值,防止优化导致的出错
| 2018-2-12 07:49 | 显示全部楼层
可能存在优化的情况,你可以直接while(获取串口中断标志函数),你这样就不会被优化了。或者你可以将优化等级调整为0,看看是不是真的被优化掉了。
| 2018-2-20 20:22 | 显示全部楼层
一楼
| 2018-2-20 21:44 | 显示全部楼层
肯定有这个可能的,加volatile属性是必要的,毕竟这个变量或者标志,会在中断函数里改变,本来就应该是volatile属性。
| 2018-2-20 21:59 | 显示全部楼层
你这个标志位是怎么定义的
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式
我要创建版块

论坛热帖

关闭

热门推荐上一条 /4 下一条

分享 快速回复 返回顶部 返回列表