OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5671|回复: 11

大侠们帮我看看这个while循环的问题

[复制链接]

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
发表于 2015-1-19 08:23:08 | 显示全部楼层 |阅读模式
5金钱
while(RelativeTime<=CanWaitTime[order]&&can1_recv_flag==0)

RelativeTime=TransTime-CurrentTime;
Normal_Delay(0x400);  
}

上面是我的代码,就是设定一个等待时间,等待时间减到0就跳出while。
问题是把那句“Normal_Delay(0x400);”注释掉程序下进去就会死掉。加上Normal_Delay(0x400);程序就可以正常跳出while继续进行下去。


最佳答案

查看完整内容[请看2#楼]

回复【11楼】XUZJWWSZ: --------------------------------- 仿真看看就知道为什么了.
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165585
金钱
165585
注册时间
2010-12-1
在线时间
2119 小时
发表于 2015-1-19 08:23:09 | 显示全部楼层
回复【11楼】XUZJWWSZ:
---------------------------------
仿真看看就知道为什么了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

133

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2014-12-21
在线时间
1 小时
发表于 2015-1-19 10:09:45 | 显示全部楼层
你的延时是不是太久了。去掉那一句是缩短了延时。可能你延时太长导致你没心情等待现象就认为死机了
流过汗水才能代表自己真的学会了如何不流汗。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-1-19 11:19:43 | 显示全部楼层
楼上说的可能最大!你多等点时间看看!
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
 楼主| 发表于 2015-1-19 14:26:48 | 显示全部楼层
回复【2楼】花戒:
---------------------------------
不是的,我是加了延时程序才能走下去。不加延时程序才会死
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13240
金钱
13240
注册时间
2012-11-26
在线时间
3825 小时
发表于 2015-1-19 14:31:37 | 显示全部楼层
回复【4楼】XUZJWWSZ:
---------------------------------
我也遇到过这种必须加延时的情况,即使延时1us也行

不过当时仅仅是把delay加上去就完事了,没深想
学无止境
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
 楼主| 发表于 2015-1-19 15:53:49 | 显示全部楼层
回复【3楼】烟酒不沾:
------------------------------回复【3楼】烟酒不沾:
---------------------------------
不是的,我是加了延时程序才能走下去。不加延时程序才会死
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
 楼主| 发表于 2015-1-19 15:56:06 | 显示全部楼层
回复【5楼】jermy_z:
---------------------------------
是的,我最初是用了一个“LED_ON”作为调试观察用的。后来把点亮led那句注释掉,程序就死了。
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-1-19 16:07:36 | 显示全部楼层
那问一下你的TransTime-CurrentTime;参数时间得到是不是和电机或别的外部执行部件的动作有关?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165585
金钱
165585
注册时间
2010-12-1
在线时间
2119 小时
发表于 2015-1-19 23:11:19 | 显示全部楼层
死在哪里???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
 楼主| 发表于 2015-1-20 12:31:45 | 显示全部楼层
回复【8楼】烟酒不沾:
---------------------------------
在进while之前有一句currenttime=transtime。transtime在一个中断中不断自加。
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
 楼主| 发表于 2015-1-20 12:33:06 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
我认为就是死在了while循环里。
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-10-15 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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