|
读9200的I/O口读到的都是0 <br /><br />遇到一个非常奇怪的问题:<br /><br />设置PD[4]为输入口,设置的函数为:<br /><br />int at91_set_gpio_input(AT91PS_PIO pio_base, uint pin, int use_pullup, int use_filter)<br />{<br /><br /> pio_base->PIO_IDR |= pin;<br /> if(use_pullup)<br /> {<br /> pio_base->PIO_PPUER |= pin; <br /> }<br /> else<br /> {<br /> pio_base->PIO_PPUDR |= pin;<br /> }<br /> pio_base->PIO_ODR |= pin;<br /> pio_base->PIO_PER |= pin;<br /> if(use_filter)<br /> {<br /> pio_base->PIO_IFER |= pin; <br /> }<br /> else<br /> {<br /> pio_base->PIO_IFDR |= pin; <br /> }<br /> return (0);<br />}<br /><br />然后读取PD[4]上的数值,函数为:<br /><br />uchar at91_get_gpio_bit_value(AT91PS_PIO pio_base, uint pin)<br />{<br /> if(( pio_base->PIO_PDSR & pin ) == pin )<br /> return (1);<br /> else<br /> return (0);<br />}<br /><br />发现读到的都是0!<br /><br />后来改用其他的口设置为输出,无论输出什么值读回来也是0,但是PIO_ODSR(输出数据状态寄存器)值是正常的,就是PIO_PDSR(引脚状态寄存器)读的就是0<br /><br />我是哪里搞错了?各位有遇到过这种问题么?<br />头痛ing~~~~~<br /> <br /> <br /> |
|