STM32的GPIO的输入,输出与开漏,推挽,上拉,下拉的关系

STM32的GPIO的输入,输出与开漏,推挽,上拉,下拉的关系

输入输出的模式类别网上的资料有很多,我在这不多详写,主要写是GPIO 的管脚选用不同的模式,会对输出输入的电压造成什么影响

1.先看看输出

首先明确一点,开漏和推挽只是输出的两种模式,输入中没有这个选项。

在这里插入图片描述
使用STM32CubeMx对应生成MDK代码,编译下载后,咱们看看这几种模式选择中的输出电压到底是多少?(下表的实际电压为万用表测量!!!)
在这里插入图片描述
通过上图可以看出

  1. 推挽输出的可以输出高电平,低电平,开漏输出加上拉电阻才能输出高电平
  2. 输出中上拉电阻不足以让管脚输出3.3v的电压。
  3. 推挽输出中配置为输出高,下拉和上拉对输出电平无影响
  4. 开漏输出中必须配置上拉电阻和配置输出高才能输出高电平

2.再看看输入

输入选项配置中只有上拉和下拉
在这里插入图片描述

	  printf("U5_RX = %d ",HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_2));
	  printf("U5_TX = %d ",HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_12));
	  printf("U6_RX = %d ",HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_7));
	  printf("U6_TX = %d ",HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_6));	

 	  printf("F11 = %d ",HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_11));
	  printf("F13 = %d ",HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_13));
 	  printf("F15 = %d\r\n",HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_15));

U5_RX = 1 U5_TX = 1 U6_RX = 1 U6_TX = 0 F11 = 0 F13 = 1 F15 = 0

前4个管脚是用作串口的,但是我测试时感觉读取的电平不符合逻辑,这两个串口只是普通的ttl串口外部也没加上拉电阻,这电平有点不太对
有知道的小伙伴可评论告诉我,十分感谢

后面三个管脚可以看出,输入模式的上拉可以让单片机判断为高电平

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值