OpenEdv-开源电子网

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

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

[复制链接]

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

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

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
发表于 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

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3329
金钱
3329
注册时间
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

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

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
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

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 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

主题

245

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
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, 2024-11-24 07:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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