OpenEdv-开源电子网

标题: 为什么if也可以这么奇葩,求解 [打印本页]

作者: DZKJXHxcz    时间: 2016-8-13 23:19
标题: 为什么if也可以这么奇葩,求解
一下是我在ucos下用的if语句,在非ucos环境下是没问题的,到ucos环境下面的时候出现了这样的错误
1: 用if((key_press==1)&&(KEY2==0))时,程序没有问题
2:用if(((key_press==1)&&(KEY2==0))||(hand!=0))就出现问题了,即使条件不满足,照样进入if循环,为什么呀,不解,求救
各位大侠有没有遇到过这种经历,求解

作者: 正点原子    时间: 2016-8-13 23:19
必须是自己判断失误啊...特别的,另   temp=(key_press==1)&&(KEY2==0))||(hand!=0),然后看temp的值,就清白了...
作者: 八度空间    时间: 2016-8-14 01:54
或的关系只要有一个满足就会进入
作者: he282905293    时间: 2016-8-14 07:31
检查一下是不是hand!=0这个条件满足了
作者: DZKJXHxcz    时间: 2016-8-14 09:29
he282905293 发表于 2016-8-14 07:31
检查一下是不是hand!=0这个条件满足了

肯定是不满足的,而且我置0后再判断一遍也是这样,不过只要进入过一次下次就正常了

作者: DZKJXHxcz    时间: 2016-8-14 09:32
八度空间 发表于 2016-8-14 01:54
或的关系只要有一个满足就会进入

两个都是不满足的,但是还是进去了,只是进去一次后下次就正常了,没有使用ucos的时候是没问题的,我怀疑和抢占式运行方式有关
作者: 拖拉机    时间: 2016-8-14 09:45
&&有一个条件为假,后面的就不判断了。
作者: 八度空间    时间: 2016-8-14 14:03
DZKJXHxcz 发表于 2016-8-14 09:29
肯定是不满足的,而且我置0后再判断一遍也是这样,不过只要进入过一次下次就正常了

没理由啊
作者: jinggx    时间: 2016-8-14 14:19
mdk中,这种情况注意要用volitate类型
作者: NBA    时间: 2016-8-15 17:57
顶帖顶帖
作者: 一起走过的日子    时间: 2016-8-20 19:43
hand==!0吧
作者: DZKJXHxcz    时间: 2016-8-28 18:32
本帖最后由 DZKJXHxcz 于 2016-8-28 18:39 编辑

问题为最后是解决了,应该是MDK优化的问题,也有可能和JLINK仿真有关系,进去是进去了,不过结果和没进去一样。就是进入if里面后,如果if为假,似乎是没有执行里面的代码,if为真才会执行。
不过这种情况仅仅会在复位后第一次会出现。
谢谢大家的解答。

作者: DZKJXHxcz    时间: 2016-8-28 18:33
一起走过的日子 发表于 2016-8-20 19:43
hand==!0吧

这个应该是一样的吧




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4