智能车制作

标题: 关于K60的GPIO做输入的问题,求大神~~ [打印本页]

作者: 三味    时间: 2013-1-28 22:55
标题: 关于K60的GPIO做输入的问题,求大神~~
本人新手,求指导,我用GPIO的C2到C9做拨码开关的输入,用的是1.5k下拉电阻的形式,出的问题具体如下:
1.单片机上电时C2到C9初始为0的位用万用表可以测得0.4,但拨到1再拨0后再测就有1.7V了。。。,此时看寄存器里对应位的值也是1而不是0。。。,之后再拨开关读进来的值也一直是1

2.单片机上电时C2到C9初始为1的位不管怎么拨开关都读到1(也就是说只要输入过1之后,就永远是1了。。。。电压表测得的是1.7V(输入0)和3.1V(输入1))

3.把单片机卸掉后测电压是正常的

4.开关断开时LED灭,合上时LED亮(有点废话不过也写吧。。。)

以下是相关的初始化代码和电路,麻烦大神看下,其实都很简单,但我看不出错来。。。。

GPIOC的初始化
gpio_init ( PORTC, 2,0,0);
    gpio_init ( PORTC, 3,0,0);
    gpio_init ( PORTC, 4,0,0);
    gpio_init ( PORTC, 5,0,0);
    gpio_init ( PORTC, 6,0,0);
    gpio_init ( PORTC, 7,0,0);
    gpio_init ( PORTC, 8,0,0);
    gpio_init ( PORTC, 9,0,0);

以上是龙丘的函数,应该没什么问题

读GPIOC口的代码
motor_key = ( ( ~(GPIOC_PDIR >> 2) ) & 0x0f );//5-2 bit
      servo_key = ( ( ~(GPIOC_PDIR >> 6) ) & 0x0f );//9-6 bit
初始没改变开关的时候可以读到正常的值,应该也没问题

程序之后就是不断读开关的值,然后通过PIT0的定时中断用数码管动态显示了,没有改相关的设置了

电路


我唯一想到可能有问题的地方就是在开关断开时,单片机C2-C9有电流输出,下拉电阻上有压降,导致电压不接近0,但这也解释不了初始为0时能够测得0.4V的现象以及“4”中描述的现象,所以也是没有根据的猜想
麻烦大神帮我看下那些地方可能有问题
或者说下单片机的IO口做GPIO的时候需要注意那些寄存器的初始化,感谢了~~


作者: 1508323954    时间: 2013-1-29 10:43
应该上拉吧
作者: 三味    时间: 2013-1-29 13:43
1508323954 发表于 2013-1-29 10:43
应该上拉吧

我也这么认为,但是下拉为什么会有问题呢?





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2