智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3531|回复: 2
打印 上一主题 下一主题

[讨论] 关于K60的GPIO做输入的问题,求大神~~

[复制链接]

1

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
675
威望
350
贡献
171
兑换币
178
注册时间
2012-10-14
在线时间
77 小时
毕业学校
北京理工大学
跳转到指定楼层
1#
发表于 2013-1-28 22:55:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本人新手,求指导,我用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的时候需要注意那些寄存器的初始化,感谢了~~

1

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
675
威望
350
贡献
171
兑换币
178
注册时间
2012-10-14
在线时间
77 小时
毕业学校
北京理工大学
3#
 楼主| 发表于 2013-1-29 13:43:27 | 只看该作者
1508323954 发表于 2013-1-29 10:43
应该上拉吧

我也这么认为,但是下拉为什么会有问题呢?
回复 支持 反对

使用道具 举报

27

主题

798

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6257

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2948
贡献
1741
兑换币
1138
注册时间
2012-2-20
在线时间
784 小时
2#
发表于 2013-1-29 10:43:28 | 只看该作者
应该上拉吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 14:08 , Processed in 0.083616 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表