程序出错PE12的值读上来一直是1

2019-07-14 16:45发布

#define ExButton1()     GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_14)
#define ExButton2()     GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)
程序这样写就会出错,PE12的值读上来一直是1!
        if(ExButton1()==0)   //启动紧急开门1,并记录日志
        {
            q_doorcmd = DOOR_STATE_OPEN;
            trig_openstyle = R_TRIG_EXBTN1OPEN;
            RecordDoorState(trig_openstyle,DOOR_STATE_OPEN);//表示应急开门1
        }
        if(ExButton2()==0)   //启动应急开门2,并记录日志
        {
            q_doorcmd = DOOR_STATE_OPEN;
            trig_openstyle = R_TRIG_EXBTN2OPEN;
            RecordDoorState(trig_openstyle,DOOR_STATE_OPEN);//52='4',表示应急开门2
        }
程序这样写,读PE12的值就是0
        if((ExButton1()==0) || (ExButton2()==0))
        {
            Door1Open(1);

        }

郁闷了.....不知道怎么回事,有人遇到类似的问题吗?我上面是通用的硬件,其它程序都没有占用IO,正确的是PE12读上来为0 !
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
jjjsuwer
1楼-- · 2019-07-15 20:26
你这两个if是并列关系,
你想用的是if....else吧?
zhhx1985
2楼-- · 2019-07-16 02:01
 精彩回答 2  元偷偷看……
yuxiangxyz
3楼-- · 2019-07-16 06:43
   (GPIOE>IDR & GPIO_Pin_12 )  
   (GPIOE>IDR & GPIO_Pin_14)
这样试试,我读都是这样的 ,好像没有出现过问题
nvyweyrww1
4楼-- · 2019-07-16 11:45
zhhx1985 发表于 2018-10-19 09:07
看来我表述的不好,if(||)这种是没问题的,有问题的是if()。。。if()。。。

if()
……
else
;
if()
……
else

或者用if ()
……
else if()
……
zhhx1985
5楼-- · 2019-07-16 14:47
nvyweyrww1 发表于 2018-10-19 11:10
if()
……
else

不可以分开判断吗?
if(条件1)
{
   函数1
}


if(条件2)
{

函数2
}

条件1和条件2无关,if  。。else。。 这个我倒是没试过...
zhhx1985
6楼-- · 2019-07-16 15:56
yuxiangxyz 发表于 2018-10-19 10:50
   (GPIOE>IDR & GPIO_Pin_12 )  
   (GPIOE>IDR & GPIO_Pin_14)
这样试试,我读都是这样的 ,好像没有出现过问题

我用的是库函数,应该不会是这个问题吧...

一周热门 更多>