OpenEdv-开源电子网

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

问下大家主函数里面可以有多个while(1)吗

[复制链接]

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
金钱
1163
注册时间
2019-10-22
在线时间
226 小时
发表于 2023-6-2 17:05:05 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6756

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12983
金钱
12983
注册时间
2012-11-26
在线时间
3787 小时
发表于 2023-6-2 20:27:11 | 显示全部楼层
去把C语言基础学好了  自己就明白了
学无止境
回复

使用道具 举报

31

主题

1953

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4462
金钱
4462
注册时间
2018-5-11
在线时间
932 小时
发表于 2023-6-2 21:48:25 | 显示全部楼层
可以有多个,
不过你得保证能从一个while(1)跳出来,
使别的while(1)有机会执行,
否则,别的while(1)就白瞎了。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
946
金钱
946
注册时间
2014-11-2
在线时间
367 小时
发表于 2023-6-3 05:18:53 来自手机 | 显示全部楼层
有break的话多少都可以
回复

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2021-12-23
在线时间
204 小时
发表于 2023-6-3 08:39:09 来自手机 | 显示全部楼层
回复

使用道具 举报

0

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2016-3-30
在线时间
67 小时
发表于 2023-6-3 09:10:07 | 显示全部楼层
当然可以有,就看你怎么退出这个while(1),去执行另外一个while(1)了?
回复

使用道具 举报

4

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2019-5-31
在线时间
166 小时
发表于 2023-6-3 10:37:09 | 显示全部楼层
主函数里面可以有多个"while(1)",但不可以有多个"while(1);"
回复

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2021-12-23
在线时间
204 小时
发表于 2023-6-3 13:36:49 | 显示全部楼层
可以,但没有什么意义
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2023-6-3 14:48:11 | 显示全部楼层
当然可以有。任何函数里都可以存在多个while(1),但是循环体内如果没有break或者goto之类退出或跳出循环的语句,后面的while(1)是得不到执行的。
回复

使用道具 举报

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
金钱
1163
注册时间
2019-10-22
在线时间
226 小时
 楼主| 发表于 2023-6-4 17:34:01 | 显示全部楼层
c2007s 发表于 2023-6-3 14:48
当然可以有。任何函数里都可以存在多个while(1),但是循环体内如果没有break或者goto之类退出或跳出循环 ...

while.png

就是这种可以用多个while(1)循环等待接收命令应答吗?如果接收应答成功break跳出while(1)循环,如果接收失败则再次发送命令

回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2023-6-5 09:26:22 | 显示全部楼层
不建议这么干。这样很容易陷入死循环。每一个while里面应该还需要一个判断超时跳出。比如我已经发了等了你10个600ms,你还没有回答我,我就跳出了,返回一个失败消息。
回复

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2021-2-4
在线时间
146 小时
发表于 2023-6-5 09:48:53 | 显示全部楼层
是上RTOS吗
回复

使用道具 举报

187

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1120
金钱
1120
注册时间
2012-6-4
在线时间
120 小时
发表于 2023-6-5 10:04:27 | 显示全部楼层
jermy_z 发表于 2023-6-2 20:27
去把C语言基础学好了  自己就明白了

你说得真好,下次别说了。
回复

使用道具 举报

70

主题

6756

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12983
金钱
12983
注册时间
2012-11-26
在线时间
3787 小时
发表于 2023-6-5 10:24:00 | 显示全部楼层
51921866 发表于 2023-6-5 10:04
你说得真好,下次别说了。

呵呵  那你下次也别回我了  
学无止境
回复

使用道具 举报

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
金钱
1163
注册时间
2019-10-22
在线时间
226 小时
 楼主| 发表于 2023-6-5 14:53:39 | 显示全部楼层

不是,就是一个简单通信
回复

使用道具 举报

9

主题

249

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2014-11-25
在线时间
180 小时
发表于 2023-6-5 15:14:54 | 显示全部楼层
当然可以了
回复

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2021-2-4
在线时间
146 小时
发表于 2023-6-6 11:33:17 | 显示全部楼层
Xiuer666 发表于 2023-6-5 14:53
不是,就是一个简单通信

通讯为什么要用while?
是一在那等吗?
你这个和等待按键抬起有点相似是吧
回复

使用道具 举报

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
金钱
1163
注册时间
2019-10-22
在线时间
226 小时
 楼主| 发表于 2023-6-6 14:34:59 | 显示全部楼层
电子控2021 发表于 2023-6-6 11:33
通讯为什么要用while?
是一在那等吗?
你这个和等待按键抬起有点相似是吧

现在觉得用while还是不好,换swich 了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 23:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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