你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

奇葩问题,来围观,帮我找错....

[复制链接]
wofei1314 提问时间:2015-10-27 18:10 /
阅读主题, 点击返回1楼
收藏 1 评论39 发布时间:2015-10-27 18:10
39个回答
jiaswang 回答时间:2015-10-29 12:15:57
wofei1314 发表于 2015-10-28 18:20
看来我表述的不好,if(||)这种是没问题的,有问题的是if()。。。if()。。。 ...

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

或者用if ()
……
else if()
……
wofei1314 回答时间:2015-10-30 09:33:02

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


if(条件2)
{

函数2
}

条件1和条件2无关,if  。。else。。 这个我倒是没试过...
wofei1314 回答时间:2015-10-30 09:33:53
chifen 发表于 2015-10-29 11:42
(GPIOE>IDR & GPIO_Pin_12 )  
   (GPIOE>IDR & GPIO_Pin_14)
这样试试,我读都是这样的 ,好像没有出 ...

我用的是库函数,应该不会是这个问题吧...
chifen 回答时间:2015-10-30 10:10:02
哪种库 HAL    HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_12)
wofei1314 回答时间:2015-10-30 11:11:40
3.5的标准库
拉肚肚 回答时间:2015-10-30 13:00:55
路过~~~~支持下
chifen 回答时间:2015-10-30 13:13:38
标准库支持的,可能直接使用
chifen 回答时间:2015-10-30 13:19:26
我今天发现  if 语句里最好不要运算的太多 例子: y=1; t=0x20 ;        if(((t&0x80)==0)&&y==1)   这样条件应该成立进入 才对,但这时是进入不了的
wofei1314 回答时间:2015-10-30 13:29:04
chifen 发表于 2015-10-30 13:19
我今天发现  if 语句里最好不要运算的太多 例子: y=1; t=0x20 ;        if(((t&0x80)==0)&&y==1)   这样条件应该 ...

我就读IO口而已...
windsky-2021230 回答时间:2015-10-30 14:20:32
你就用||的方式,一清二楚。
至于为什么单独
if(按键1) if(按键2)
的方式读回来的值都是1,就不要深究了吧。可能是芯片的问题。
windsky-2021230 回答时间:2015-10-30 14:23:17
或者这样写试下:

        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
        }
zhoupxa 回答时间:2015-10-30 14:43:38
这个问题一点都不奇葩。
从功能逻辑和C语言语法来看,第一段程序和第二段程序都能在检测到开门按钮1或2按下时完成开门动作(当然第一段程序还有相应的日志记录),只能说是没有正确采集到开门按钮1或2的状态而已,应该从GPIO PE12的输入状态采集是否正确入手DEBUG。
另外,GPIO PE14的状态采集正确吗?
zhoupxa 回答时间:2015-10-30 14:45:09
wofei1314 发表于 2015-10-28 21:48
谢谢,同样的程序配置,自然都使能 了时钟,配置了输入模式。。。。。

差别只是用两个if判断还是if(条 ...

尽量从自己的硬件、软件找问题,不要轻易认为编译器或MCU如何如何
wofei1314 回答时间:2015-10-30 16:25:39
zhoupxa 发表于 2015-10-30 14:45
尽量从自己的硬件、软件找问题,不要轻易认为编译器或MCU如何如何

同样的板子,说明硬件是一样的,差别只是程序,IO配置都一样,所以才无语,回头试试,看看汇编代码的区别以排除编译器的问题...
wofei1314 回答时间:2015-10-30 16:28:28
zhoupxa 发表于 2015-10-30 14:43
这个问题一点都不奇葩。
从功能逻辑和C语言语法来看,第一段程序和第二段程序都能在检测到开门按钮1或2按下 ...

是的,GPIOE 14采集完全正确,GPIOE 12读就一直为1,正确应该为0....

主要是在同样的板子上,同样的按钮触发,但是程序上只有这儿有区别...

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版