[mw_shl_code=c,true]u8 GT9147_Init(void)
{
u8 temp[5];
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE);//使能GPIOB,C时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;//PB1设置为上拉输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//上拉
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//PC13设置为推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化
CT_IIC_Init(); //初始化电容屏的I2C总线
GT_RST=0; //复位
delay_ms(10);
GT_RST=1; //释放复位
delay_ms(10);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PB1设置为浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
delay_ms(100);
GT9147_RD_Reg(GT_PID_REG,temp,4);//读取产品ID
temp[4]=0;
printf("CTP ID:%s
",temp); //打印ID
if(strcmp((char*)temp,"9147")==0)//ID==9147
{
temp[0]=0X02;
GT9147_WR_Reg(GT_CTRL_REG,temp,1);//软复位GT9147
GT9147_RD_Reg(GT_CFGS_REG,temp,1);//读取GT_CFGS_REG寄存器
if(temp[0]<0X60)//默认版本比较低,需要更新flash配置
{
printf("Default Ver:%d
",temp[0]);
GT9147_Send_Cfg(1);//更新并保存配置
}
delay_ms(10);
temp[0]=0X00;
GT9147_WR_Reg(GT_CTRL_REG,temp,1);//结束复位
return 0;
}
return 1;
}[/mw_shl_code]
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PB1设置为浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
delay_ms(100);
也没看到后面有哪里操作INT 那么这个浮空输入和浮空输出有什么影响呢,引脚分别呈现什么状态呢?我以前的理解是不管是浮空输入还是浮空输出引脚都是高阻状态相当于什么都没接,但是这里浮空输出可以正常运行浮空输入就不行,所以这浮空输入和输出引脚呈现的状态还是不一样的吧?那是怎么样的呢?渴望大神赐教!
看IO结构图,
上拉电阻和下拉电阻,其实与管脚的方向无关。
所以,也许注释应当这样说:使能上拉电阻,或者使能下拉电阻,或者浮空。
确也发现同样问题,有的例程,是浮空输出
一周热门 更多>