在ILI9341触摸屏的u16 LCD_RD_DATA(void)读数据函数里面有如下几段对IO口配置的代码,为什么要配置成上拉输入呢? 而且输出全为0又是为什么?还有0x08在CRL寄存器里面不是设置成上拉/下拉输入吗,原子哥给出的注释是上拉输入,这是怎么确定的?在下小白初学stm32还请各位大哥多多指教!
GPIOB->CRL=0X88888888; //PB0-7 上拉输入 为什么?
GPIOB->CRH=0X88888888; //PB8-15 上拉输入 为什么?
GPIOB->ODR=0X0000; //输出全为0 为什么?
LCD_RS_SET;
LCD_CS_CLR;
LCD_RD_CLR;
if(lcddev.id==0X8989)delay_us(2);//
t=DATAIN;
LCD_RD_SET;
LCD_CS_SET;
GPIOB->CRL=0X33333333; //PB0-7 上拉输出 为什么?
GPIOB->CRH=0X33333333; //PB8-15 上拉输出 为什么?
GPIOB->ODR=0XFFFF; //全部输出高 为什么?
return t;
我的理解是,设置为上拉输入,为了检测低电平输入,外部输入默认电平是高电平,也就是说外部输入是0就拉低,是1或者没有输入就不变。(这个得根据外设电器特性来使用吧,有的外设不能直接拉高STM32IO口的电平,只能拉低)然后为了防止自己的输出端口对对输入造成影响,就把输出设置为0. 读取完毕之后,把GPIOB拉高输出,我觉得也应该是避免意想不到的干扰。反正每次执行读数据的时候都会重复上面的操作。
不知道我的理解对不对,欢迎拍砖
一周热门 更多>