你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
wofei1314 发表于 2015-10-28 18:20 看来我表述的不好,if(||)这种是没问题的,有问题的是if()。。。if()。。。 ...
jiaswang 发表于 2015-10-29 12:15 if() …… else
chifen 发表于 2015-10-29 11:42 (GPIOE>IDR & GPIO_Pin_12 ) (GPIOE>IDR & GPIO_Pin_14) 这样试试,我读都是这样的 ,好像没有出 ...
chifen 发表于 2015-10-30 13:19 我今天发现 if 语句里最好不要运算的太多 例子: y=1; t=0x20 ; if(((t&0x80)==0)&&y==1) 这样条件应该 ...
wofei1314 发表于 2015-10-28 21:48 谢谢,同样的程序配置,自然都使能 了时钟,配置了输入模式。。。。。 差别只是用两个if判断还是if(条 ...
zhoupxa 发表于 2015-10-30 14:45 尽量从自己的硬件、软件找问题,不要轻易认为编译器或MCU如何如何
zhoupxa 发表于 2015-10-30 14:43 这个问题一点都不奇葩。 从功能逻辑和C语言语法来看,第一段程序和第二段程序都能在检测到开门按钮1或2按下 ...
if()
……
else
;
if()
……
else
;
或者用if ()
……
else if()
……
不可以分开判断吗?
if(条件1)
{
函数1
}
if(条件2)
{
函数2
}
条件1和条件2无关,if 。。else。。 这个我倒是没试过...
我用的是库函数,应该不会是这个问题吧...
我就读IO口而已...
至于为什么单独
if(按键1) if(按键2)
的方式读回来的值都是1,就不要深究了吧。可能是芯片的问题。
if(ExButton1())
{}
else
{
q_doorcmd = DOOR_STATE_OPEN;
trig_openstyle = R_TRIG_EXBTN1OPEN;
RecordDoorState(trig_openstyle,DOOR_STATE_OPEN);//表示应急开门1
}
if(ExButton2())
{}
else
{
q_doorcmd = DOOR_STATE_OPEN;
trig_openstyle = R_TRIG_EXBTN2OPEN;
RecordDoorState(trig_openstyle,DOOR_STATE_OPEN);//52='4',表示应急开门2
}
从功能逻辑和C语言语法来看,第一段程序和第二段程序都能在检测到开门按钮1或2按下时完成开门动作(当然第一段程序还有相应的日志记录),只能说是没有正确采集到开门按钮1或2的状态而已,应该从GPIO PE12的输入状态采集是否正确入手DEBUG。
另外,GPIO PE14的状态采集正确吗?
尽量从自己的硬件、软件找问题,不要轻易认为编译器或MCU如何如何
同样的板子,说明硬件是一样的,差别只是程序,IO配置都一样,所以才无语,回头试试,看看汇编代码的区别以排除编译器的问题...
是的,GPIOE 14采集完全正确,GPIOE 12读就一直为1,正确应该为0....
主要是在同样的板子上,同样的按钮触发,但是程序上只有这儿有区别...