牛卧堂MCU技术交流

标题: PA0设置为准双向模式做按键,为什么不行? [打印本页]

作者: ypwang314    时间: 2017-3-18 08:31
标题: PA0设置为准双向模式做按键,为什么不行?
NUC472芯片,想用PA0做一个按键。
省掉了不相关的部分,程序如下:
SYS_UnlockReg();
..............................................................
SYS->GPA_MFPL    =    (SYS->GPA_MFPL & (~SYS_GPA_MFPL_PA0MFP_Msk) ) | SYS_GPA_MFPL_PA0MFP_GPIO  ;   
..................................................
SYS_LockReg();
..........................................................

GPIO_SetMode(PA,BIT0,GPIO_MODE_QUASI);
    PA0 = 1;
     if(PA0 == 0)
    {
        if(PA0 == 0)
        {
        SPIflshUpload();
        }
    }
按钮一直没有做用,就用示波器看了一下,结果发现不管我的按钮按不按下去PA0都是低电平的(另一个按键PI3口相同设置一直都是高电平)
如果用GPIO_SetMode(PA,BIT0,GPIO_MODE_OUTPUT)A0上才会有一个上升到芯片供电电压一半的短脉冲。
后来加了一个10K的上接电阻,按键才算正常了。是我漏掉了什么设置吗?请高手指教。



作者: arm_nuedu    时间: 2017-3-18 10:14
你这个问题我也不清楚,但刚从新唐培训出来,准双向mode讲的是,为了防止漏电,在此模式下,就像该pin接到vcc或者gnd!!!
作者: arm_nuedu    时间: 2017-3-18 10:14
你这个问题我也不清楚,但刚从新唐培训出来,准双向mode讲的是,为了防止漏电,在此模式下,就像该pin接到VCC或者GND!!!
作者: arm_nuedu    时间: 2017-3-18 10:14
你这个问题我也不清楚,但刚从新唐培训出来,准双向mode讲的是,为了防止漏电,在此模式下,就像该pin接到VCC或者GND!!!
作者: arm_nuedu    时间: 2017-3-18 10:17
另外,请问是接10k的上拉电阻吗?电阻在外部吗?
作者: ypwang314    时间: 2017-3-18 10:37
arm_nuedu 发表于 2017-3-18 10:17
另外,请问是接10k的上拉电阻吗?电阻在外部吗?

10K是我外部加的,加了之后就可以正常工作。
现在这个PA口感觉就像标准51的P0口内部没有上拉一样,但是看新唐的资料里面在准双向模式,如果我让PA = 1,应该有一个百微安级的上拉。
but it'not work.
作者: Angus    时间: 2017-3-18 15:31
arm_nuedu 发表于 2017-3-18 10:14
你这个问题我也不清楚,但刚从新唐培训出来,准双向mode讲的是,为了防止漏电,在此模式下,就像该pin接到V ...

对于不用的  GPIO 口,如果配置成输入了,电路上就要接地或电源,否则有微安级的漏电流。
如果悬空了,就要配成准双向输出1。
作者: arm_nuedu    时间: 2017-3-18 16:40
谢谢你们的回答!




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2