使用STM32驱动160160液晶,数据线是D0-D7,8位数据口;液晶这8位数据口要接到连续的GPIO口上吗,比如GPIOA的PIN0-PIN7,或者高8位?
如果是接到不连续的GPIO上,如何给D0-D7赋值?
可以写一个函数函数里面对输入的八位数按位赋值给IO口,方便操作,就拿PA3;PA4;PA5;PB7;PB8;PB9;PB10;PB11这几个IO口举例,函数如下
void eightin(unsigned char in){ PAin(3)=(in&(0x01))>>0;//第零位 PAin(4)=(in&(0x02))>>1; PAin(5)=(in&(0x04))>>2; PBin(7)=(in&(0x08))>>3; PBin(8)=(in&(0x10))>>4; PBin(9)=(in&(0x20))>>5; PBin(10)=(in&(0x40))>>6; PBin(11)=(in&(0x80))>>7;//第八位}函数的输入的参数in是一个八位的数,也就是要给PA3;PA4;PA5;PB7;PB8;PB9;PB10;PB11赋值的数。
函数我没有运行,但是想法应该没问题。
这个不用连续,不过一般来说如果有连续的会更方便,甚至效率更高,因为一般说来连续的更可能对应同一个内部寄存器,赋值、读取甚至可以直接按char甚至多个char为单位来处理。
如果不能连续,就只能分别按bit去处理,编码麻烦,数据处理的效率也会更低(很多时候会用到更多处理步骤)
可以不连续的。通过单独给D0-D7的口线连续单独位赋值也是可以的,不过速度上肯定不如在同一个口上,一下子赋值进去快。
你要用GPIO模块驱动的话,是的。
还可以直接连接到FSMC上,并不是连续的,但是可以使用并口外设