小弟在6467t上面做关于gpio的测试。
为了测试gpio的读写是否正确,与硬件方面做了一些约定,gpio0做输出,每写入一个0/1,这个值就输出到gpio1、gpio2、gpio3和gpio37
在内核里面是这样初始化的:
gpio_request(0, NULL) ;
gpio_request(1, NULL) ;
gpio_request(2, NULL) ;
gpio_request(3, NULL) ;
gpio_request(37, NULL) ;
.........
.........
gpio_direction_output(0, 0) ;
gpio_direction_input(1) ;
gpio_direction_input(2) ;
gpio_direction_input(3) ;
gpio_direction_input(37) ;
写的时候是这样写的:
gpio_set_value(0, 1) ;
读的时候是这样写的:
unsigned int uValue1 = 0 ;
unsigned int uValue2 = 0 ;
unsigned int uValue3 = 0 ;
unsigned int uValue37 = 0 ;
uValue1= gpio_get_value(1) ;
uValue1 = (uValue1 >> 1) & 0x00000001 ;
uValue2 = gpio_get_value(2) ;
uValue2= (uValue2>> 2) & 0x00000001 ;
uValue3 = gpio_get_value(3) ;
uValue3= (uValue2>>3) & 0x00000001 ;
uValue37 = gpio_get_value(37) ;
uValue37= (uValue2>>5) & 0x00000001 ;
结果是这样的:
uValue1、uValue2、uValue3都是1,但是uValue37始终是0
不明白为什么是这样,gpio37需要什么特殊设定么?或者说gpio32以上的引脚需要做什么特殊处理么?