打印

遇到问题:无论什么情况读9200的I/O口都是0

[复制链接]
1567|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
borbery|  楼主 | 2007-8-13 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I/O, pi, IO, se, pd
读9200的I/O口读到的都是0 

遇到一个非常奇怪的问题:

设置PD[4]为输入口,设置的函数为:

int at91_set_gpio_input(AT91PS_PIO pio_base, uint pin, int use_pullup, int use_filter)
{

    pio_base->PIO_IDR |= pin;
    if(use_pullup)
    {
        pio_base->PIO_PPUER |= pin;        
    }
    else
    {
        pio_base->PIO_PPUDR |= pin;
    }
    pio_base->PIO_ODR |= pin;
    pio_base->PIO_PER |= pin;
    if(use_filter)
    {
        pio_base->PIO_IFER |= pin;        
    }
    else
    {
        pio_base->PIO_IFDR |= pin;        
    }
    return (0);
}

然后读取PD[4]上的数值,函数为:

uchar at91_get_gpio_bit_value(AT91PS_PIO pio_base, uint pin)
{
    if(( pio_base->PIO_PDSR & pin ) == pin )
        return (1);
    else
        return (0);
}

发现读到的都是0!

后来改用其他的口设置为输出,无论输出什么值读回来也是0,但是PIO_ODSR(输出数据状态寄存器)值是正常的,就是PIO_PDSR(引脚状态寄存器)读的就是0

我是哪里搞错了?各位有遇到过这种问题么?
头痛ing~~~~~
 
 

相关帖子

沙发
borbery|  楼主 | 2007-8-13 17:15 | 只看该作者

实在奇怪,麻烦各位给点建议阿

使用特权

评论回复
板凳
centimetre| | 2007-8-13 18:34 | 只看该作者

io的clock没有使能

使用特权

评论回复
地板
borbery|  楼主 | 2007-8-14 09:18 | 只看该作者

谢谢 centimetre 的确是时钟没有使能的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

1

粉丝