OpenEdv-开源电子网

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

求教:while循环中无限循环问题

[复制链接]

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-3-14
在线时间
10 小时
发表于 2016-4-14 20:22:51 | 显示全部楼层 |阅读模式
1金钱
想要在进入while条件循环后,最后return返回值后再继续重新进行这个循环。
比如:
while(???)
{
。。。。。。
。。。。。
return 1
}
返回值后,可以继续这个循环,无限循环返回这个值吗?

最佳答案

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

不行的,return是退出函数,不是退出while
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
755
金钱
755
注册时间
2015-9-16
在线时间
94 小时
发表于 2016-4-14 20:22:52 | 显示全部楼层
不行的,return是退出函数,不是退出while
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2016-4-15 09:41:39 | 显示全部楼层
再次调用函数就好了     你这个应该是对静态局部变量不理解才想这么做

Static u8 temp;
自己选择的路,成家前走完。
回复

使用道具 举报

7

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-12-29
在线时间
70 小时
发表于 2016-4-15 10:04:02 | 显示全部楼层
这个嘛,虽然不知道这是在干嘛,不过可以这么做:
[mw_shl_code=c,true]u8 function(u8 para)
{
........//你的while函数
}
//另外在main中,用一个while调用子函数就行了

while(1)
{
function( para_n ) ;
}[/mw_shl_code]
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-3-14
在线时间
10 小时
 楼主| 发表于 2016-4-15 10:17:48 | 显示全部楼层
aiyeba 发表于 2016-4-15 09:41
再次调用函数就好了     你这个应该是对静态局部变量不理解才想这么做

Static u8 temp;

再次调用就不能完全实现我想要的了,函数中我加了延时的。再次调用就会每次中间都会有延时。
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-3-14
在线时间
10 小时
 楼主| 发表于 2016-4-15 10:22:32 | 显示全部楼层
abc82465zz 发表于 2016-4-15 10:04
这个嘛,虽然不知道这是在干嘛,不过可以这么做:
[mw_shl_code=c,true]u8 function(u8 para)
{

这种貌似是对于我来说,是不行的。
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-3-14
在线时间
10 小时
 楼主| 发表于 2016-4-15 10:40:54 | 显示全部楼层
就想当while中条件成立后返回1,就一直返回1,不用重新进入函数,因为里面有延时。需要怎么实现呢?
u8 Check_KEY(void)       
{
       
    u8 y=0;        //记录按下的时间
        if(WK_UP==1||KEY1==0)
        {
                  delay_ms(20);
                  while(WK_UP==1)
          {
                    y++;
                        delay_ms(20);
            if(y==100)
                {
                      while(WK_UP||!KEY1)
              {         
                                while(1)
                                {          
                           LED1=0;
                           return 1;
                                }                                       
                      }       
                    }
               }
      LED1=1;
          return 0;                               
        }                                               
}       
这样每次都会重新进入函数执行
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2016-4-15 13:37:02 | 显示全部楼层
用定时器
回复

使用道具 举报

9

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2015-2-9
在线时间
51 小时
发表于 2016-4-16 08:59:03 来自手机 | 显示全部楼层
用break
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2016-4-16 09:37:07 | 显示全部楼层
这是C语言基础,return 是退出函数,就是说整个函数都结束了。break是跳出当前循环,continue是结束本次循环,重新一轮新的循环。
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-4-16 11:51:00 | 显示全部楼层
用一个函数返回这个1吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 03:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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