蓝桥杯嵌入式学习笔记(一)-----I/O口八种输出模式的理解

博主会用STM32进行开发,也用STM32做了项目。之前一般用是stm32cubeMX来开发,对stm32的底层知识了解甚浅。因此参加一次蓝桥杯来好好学习,提升一下。

(一)STM32的八种输出模式

​ 在官方库文件stm32f10x_gpio.h中对I/O口模式使用枚举定义八种模式:

typedef enum
{
	GPIO_Mode_AIN = 0x0, //模拟输入
	GPIO_Mode_IN_FLOATING = 0x04, //浮空输入
	GPIO_Mode_IPD = 0x28, //下拉输入
	GPIO_Mode_IPU = 0x48, //上拉输入
	GPIO_Mode_Out_OD = 0x14, //开漏输出
	GPIO_Mode_Out_PP = 0x10, //推挽输出
	GPIO_Mode_AF_OD = 0x1C, //复用开漏输出
	GPIO_Mode_AF_PP = 0x18 //复用推挽输出
}GPIOMode_TypeDef;

(二)八种输出模式的区别

1. 四种输入模式

  • GPIO_Mode_AIN(Aanalog Input):模拟输入,是指传统方式的输入。数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。
  • GPIO_Mode_IN_FLOATING(Floating input):浮空输入,浮空就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。 通俗讲就是让管脚什么都不接,浮空着。
  • GPIO_Mode_IPU(Input Up):上拉输入,上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分。
  • GPIO_Mode_IPD(Input Down):下拉输入,就是把电压拉低,拉到GND。原理同上。

2.四种输出模式

  • GPIO_Mode_Out_OD(Open Drain Output):开漏输出,输出端相当于三极管的集电极,要得到高电平状态需要使用上拉电阻才行,适用于做电流型的驱动,其吸收能力相对较强(一般20ma以内)。
  • GPIO_Mode_Out_PP(Push-Pull Output):推挽输出,可以输出高电平,也可以输出低电平,结构是两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止,高电平由IC电源确定。
  • GPIO_Mode_AF_ODGPIO_Mode_AF_PP:复用端口,可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。

在对复用端口解释时,存在几种解释,网上还有这种:

  • 复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)。
  • 复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

针对多个解释,下面这种应该更加好理解

  • 复用推挽输出,此时IO受内部外设控制,比如定时器的PWM,比如SPI的MOSI,MISO等。 而普通的推挽输出,则IO受ODR控制。
  • 设置为复用推挽输出,那么IO就不受ODR控制了,这里应该是与PE5这个IO口复用的外设产生的低电平导致的
  • 复用推挽表示引脚的io的操作由相应的功能模块来完成,普通推挽表示你需要通过gpio寄存器来操作引脚。

ODR是输出寄存器,当IO口在输出状态下时,ODR值为0则输出低电平,为1则输出高电平。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值