STM32 (GPIO能不能同时输入和输出)
比如我这样设置;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Spe...
比如我这样设置;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;
GPIO_Init(GPIOB, &GPIO_InitStructure);
那我输出的时候是不是可以直接用这样用:
GPIO_SetBits(GPIOF, GPIO_Pin_6); //高电平
GPIO_ResetBits(GPIOF, GPIO_Pin_6); //低电平
然后采集输入的时候直接用:
Read=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5);
可不可以这样同时使用一个脚?
打错了;
那我输出的时候是不是可以直接用这样用:
GPIO_SetBits(GPIOB, GPIO_Pin_5); //高电平
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //低电平
然后采集输入的时候直接用:
Read=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5);
可不可以这样同时使用一个脚? 展开
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;
GPIO_Init(GPIOB, &GPIO_InitStructure);
那我输出的时候是不是可以直接用这样用:
GPIO_SetBits(GPIOF, GPIO_Pin_6); //高电平
GPIO_ResetBits(GPIOF, GPIO_Pin_6); //低电平
然后采集输入的时候直接用:
Read=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5);
可不可以这样同时使用一个脚?
打错了;
那我输出的时候是不是可以直接用这样用:
GPIO_SetBits(GPIOB, GPIO_Pin_5); //高电平
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //低电平
然后采集输入的时候直接用:
Read=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5);
可不可以这样同时使用一个脚? 展开
3个回答
展开全部
追问
加入我要实现这样的功能需要怎么弄,把代码帮我修改下。谢谢。分数不够还可以加。
GPIO_SetBits(GPIOB, GPIO_Pin_5); //输出高电平
Delay1(3);//延迟
GPIO_SetBits(GPIOB, GPIO_Pin_4); //时钟信号高
Delay1(3);
GPIO_ResetBits(GPIOB, GPIO_Pin_4); //时钟信号低
Delay1(3);
Read=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5);//采集输入的信号
追答
你这好像是用于模拟I2C接口吧?
一般是在DATA通道输出结束后切换成输入模式才能采集输入的信号,否则两种输出模式下(推挽或开漏)都可能会有冲突。其实也很简单,在上面第3个Delay1(3)后把PB5设置回输入模式,再做适当延时,延时结束后再读应该已经稳定了。
展开全部
设定输出模式为开漏,外接上拉电阻,这时IO口就成了准双向IO口,想输入的时候输出置1,IDR就会等于输入置,这个用法标准51一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GPIO在输出方式时是同时往输入数据寄存器采样的;而在输入方式下 输出缓冲器被禁止,不会有输出。 所以要把第二条的输入配置删除才行。
另外:输出配置为开漏模式时,对输入数据寄存器的读访问可得到端口状态 ;输出配置为推挽式模式时,对输入数据寄存器的读访问得到最后一次写入输出寄存器的值(在外部电路正常情况下,假如端口短路应该是不会一致的)。
另外:输出配置为开漏模式时,对输入数据寄存器的读访问可得到端口状态 ;输出配置为推挽式模式时,对输入数据寄存器的读访问得到最后一次写入输出寄存器的值(在外部电路正常情况下,假如端口短路应该是不会一致的)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询