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

查看: 3338|回复: 10

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

[复制链接]

19

主题

-1

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-30 14:27:51 | 显示全部楼层 |阅读模式
该问题由某客户提出,发生在 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, 下载次数: 301)
回复

使用道具 举报

35

主题

1405

回帖

22

蝴蝶豆

金牌会员

最后登录
2020-12-3
发表于 2014-8-17 19:42:49 | 显示全部楼层

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

断点设置的原因吧。要把断点设置在WHILE循环里面也许就进去了。试试?
回复 支持 反对

使用道具 举报

4

主题

233

回帖

0

蝴蝶豆

高级会员

最后登录
2019-1-10
发表于 2015-6-10 10:47:14 | 显示全部楼层
学习。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-6-10 13:36:49 | 显示全部楼层
看看,,,,,,,,,,,,,,
回复 支持 反对

使用道具 举报

1

主题

26

回帖

0

蝴蝶豆

初级会员

最后登录
2017-3-21
发表于 2015-10-27 10:20:53 | 显示全部楼层
本帖最后由 xilin105 于 2015-10-27 10:34 编辑

这个问题以后还真的注意一下,要不然以后出问题都不知道怎么回事。不过一般中断里面改变的变量都会用volatile的。
回复 支持 反对

使用道具 举报

0

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-28
发表于 2016-3-4 09:13:13 | 显示全部楼层
顶顶顶!!!!
回复 支持 反对

使用道具 举报

0

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-28
发表于 2016-3-4 09:24:51 | 显示全部楼层
这个问题真的很麻烦,还是避免了好啊。
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2017-9-22
发表于 2017-9-22 21:13:43 | 显示全部楼层
KeyIn这个变量定义成volatile变量应该就可以解决了,参考看到的一篇微博:
ww删w.cnblogs.co除m/yc_sunn中iwell/archive/2010/06/24/1764文231.html
回复 支持 反对

使用道具 举报

0

主题

2175

回帖

3

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-9-22 22:02:59 | 显示全部楼层
学习!
回复 支持 反对

使用道具 举报

1

主题

98

回帖

2

蝴蝶豆

高级会员

最后登录
2020-11-27
发表于 2018-12-19 09:01:25 | 显示全部楼层
学习别人的经验,总结自己的路子
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版