你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【ST MCU实战经验】之跳不出的 while 循环

[复制链接]
小ω 提问时间:2014-7-30 14:27 /
该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:在为 STM32 调试软件过程中,遇到了一个怪现象:有如表(一)所示的一段程序中,KeyIn 是一个全局变量。当有按键按下时,键盘的中断服务程序会将对应的键值放入其中,当按键释放后,键盘中断服务程序则把 RESET 值放入该变量。行(1)的条件语句在主程序中,检测有无按键按下,并处理。行(2)则是等待按键释放。调试时,在行(1)和行(2)处各设置一个断点,然后全速运行程序。当程序停在行(1)时按下按键,继续全速运行程序。当程序停在行(2)时,放开按键,继续全速运行程序。这时,发现程序没有向下执行,而是依然回到并停留在行(2)处。打开观察窗口,观察变量KeyIn 的值,确认其值为 RESET。再次起动全速运行,程序依然回到行(2),而不是向下执行。
2014-07-30_142622.jpg

 
问题详细描述以及ST官方解答见文档: 跳不出的 while 循环.pdf (287.62 KB, 下载次数: 310)
收藏 评论11 发布时间:2014-7-30 14:27

举报

11个回答
damiaa 回答时间:2014-8-17 19:42:49

RE:【ST MCU实战经验】之跳不出的 while 循环

断点设置的原因吧。要把断点设置在WHILE循环里面也许就进去了。试试?
HenryChen 回答时间:2015-6-10 10:47:14
学习。。。。。。。。。。。。。
stary666 回答时间:2015-6-10 13:36:49
看看,,,,,,,,,,,,,,
xilin105 回答时间:2015-10-27 10:20:53
本帖最后由 xilin105 于 2015-10-27 10:34 编辑

这个问题以后还真的注意一下,要不然以后出问题都不知道怎么回事。不过一般中断里面改变的变量都会用volatile的。
夏慕冰 回答时间:2016-3-4 09:13:13
顶顶顶!!!!
夏慕冰 回答时间:2016-3-4 09:24:51
这个问题真的很麻烦,还是避免了好啊。
孤夜听雨—断 回答时间:2017-9-22 21:13:43
KeyIn这个变量定义成volatile变量应该就可以解决了,参考看到的一篇微博:
ww删w.cnblogs.co除m/yc_sunn中iwell/archive/2010/06/24/1764文231.html
epochal 回答时间:2017-9-22 22:02:59
学习!
我不怕 回答时间:2018-12-19 09:01:25
学习别人的经验,总结自己的路子
xinshuwei 回答时间:2018-12-19 09:47:41
这个平常真是遇到的呀
leo2002 回答时间:2021-1-21 18:22:12
学习了,谢谢楼主

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版