[STM32F1] 求助if语句的一点困惑

[复制链接]
4380|52
 楼主| 梦娇 发表于 2016-8-12 15:39 | 显示全部楼层 |阅读模式
if(C==1)
{
delay_ms(100000);
}
语句条件为真,开始执行大括号内一个10秒延时。当条件改变为假时是直接跳出大括号还是等延时结束后才跳出呢。如果是等延时结束在跳出大括号有什么办法能让条件为假立即结束括号内语句.那个好心人给说下,我知道这个问题很幼稚,可我都想了几天了想不出来,刚开始学单片机,C语言也是刚接触,你们别笑我

changle11sdo5 发表于 2016-8-12 16:02 来自手机 | 显示全部楼层
实测一下就几分钟的事,用不着想几天
reverse_L0111 发表于 2016-8-12 16:36 | 显示全部楼层
条件为假时,大括号内的语句不会执行了
joyme 发表于 2016-8-12 16:39 | 显示全部楼层
肯定是等延时完才能跳出
想要快速跳出,就等快速扫描(比较)条件(比如1ms比较一次,变假后1ms就能跳出,1s比较一次,变假后1s才能跳出)
可以在delay_ms()函数里增加比较语句,为假直接返回
mmuuss586 发表于 2016-8-12 16:43 | 显示全部楼层
条件为真执行,为假就不执行了;
玄德 发表于 2016-8-12 16:51 | 显示全部楼层

换个思路

while   (C==1);


E-Kaia 发表于 2016-8-12 17:38 | 显示全部楼层
肯定是等延时结束才会跳出来的,不知道为啥要这样用延时
 楼主| 梦娇 发表于 2016-8-12 18:00 | 显示全部楼层
changle11sdo5 发表于 2016-8-12 16:02
实测一下就几分钟的事,用不着想几天

试过了,要等到延时完才跳出,就是不知道怎么让条件为假时放弃正在的延时立即退出,谢谢你啊
 楼主| 梦娇 发表于 2016-8-12 18:02 | 显示全部楼层
reverse_L0111 发表于 2016-8-12 16:36
条件为假时,大括号内的语句不会执行了

谢谢你啊
yklstudent 发表于 2016-8-12 18:03 | 显示全部楼层
你这个条件为假时,不是立即就退出了嘛
 楼主| 梦娇 发表于 2016-8-12 18:03 | 显示全部楼层
mmuuss586 发表于 2016-8-12 16:43
条件为真执行,为假就不执行了;

可是条件为假要等延时完了才不执行
 楼主| 梦娇 发表于 2016-8-12 18:05 | 显示全部楼层
玄德 发表于 2016-8-12 16:51
换个思路

while   (C==1);

这个可以试试,谢谢
 楼主| 梦娇 发表于 2016-8-12 18:06 | 显示全部楼层
E-Kaia 发表于 2016-8-12 17:38
肯定是等延时结束才会跳出来的,不知道为啥要这样用延时

是用PWM控制电机的,这个延时就是收到电机停止信号后,在让电机转动会停,谢谢你啊
 楼主| 梦娇 发表于 2016-8-12 18:09 | 显示全部楼层
joyme 发表于 2016-8-12 16:39
肯定是等延时完才能跳出
想要快速跳出,就等快速扫描(比较)条件(比如1ms比较一次,变假后1ms就能跳出,1s比 ...

谢谢,我试下
icecut 发表于 2016-8-12 18:20 | 显示全部楼层
4楼 明白你意思....
另外,条件变化是在中断里吧....
justtest111 发表于 2016-8-12 18:39 | 显示全部楼层
控制电机用定时器中断吧,你这delay太恐怖了。
戈卫东 发表于 2016-8-12 18:53 | 显示全部楼层
看起来似乎是100秒。。。。。如果它已经进入了那个 delay_ms 就要等到100秒完了才出来
ddllxxrr 发表于 2016-8-12 19:05 | 显示全部楼层
条件为假根本不进大括号。OVER
ianhom 发表于 2016-8-12 19:27 | 显示全部楼层
int D = 100000;
while((C==1)&&(D > 0))
{
    delay_ms(1);
    D--;
}

评论

就是这个,1ms一次检查。  发表于 2016-8-23 22:53
changle11sdo5 发表于 2016-8-12 19:50 来自手机 | 显示全部楼层
梦娇 发表于 2016-8-12 18:00
试过了,要等到延时完才跳出,就是不知道怎么让条件为假时放弃正在的延时立即退出,谢谢你啊 ...

只有C值是1时,才会延时100秒,是不是其它代码有问题,另外注意电机有惯性,还会干扰单片机…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

108

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部