GPIO的介绍
GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚,在STM32中,GPIO的工作模式被细分为8种,由4个32位寄存器共同控制。
输出和输入都是针对芯片引脚来讲的(即引脚的对外输出,和外界对引脚的输入)。
四种输入模式介绍
输入模式下可读取端口的高低电平或电压。例如各类传感器(使用ADC功能),如果要将获取的电平传送给单片机的某一个引脚,那就要将这个引脚设置为输入模式。
1、GPIO_Mode_AIN 模拟输入
这种输入模式比较特殊,该模式主要为片上外设ADC而配置,从外部读取模拟信号,当设置为模拟输入时,GPIO会失效,引脚直接接入内部ADC。
特点:相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。通俗来讲就是,别的模式只能读取0和1,而模拟输入可以读取到0-1的变化区间。
主要应用:所有要用到ADC模拟输入的外设(例如烟雾传感器,引脚需要接收模拟信号进而计算电压值),低功耗下省电。
2、GPIO_Mode_IN_FLOATING 浮空输入
数据通道中仅接入TTL触发器(作用是将相对缓慢变化的模拟信号变成矩形信号)整形,随后输入输入数据寄存器。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空(无信号输入)的情况下,读取该端口的电平是不确定的。该种工作模式未接入任何上拉/下拉电阻。
主要应用:可用于按键KEY实验、发送接收信号RX、TX、IIC、USART等。(但按键一般更常用到上拉下拉输入,待会再重点记录)。主要还是发送和接收信号的引脚常设置为浮空输入。
3、GPIO_Mode_IPD 下拉输入
可读取引脚电平,与浮空输入相比,它内部连接下拉电阻,悬空时默认为低电平,其余相同。
4、GPIO_Mode_IPU 上拉输入
可读取引脚电平,与浮空输入相比,它内部连接上拉电阻,悬空时默认为高电平,其余相同。
主要应用:
①按键的使用
②器件的外部中断(IRQ)引脚触发中断条件为下降沿触发/低电平触发,这样在无信号输入时始终保持高电平,如果有事件触发中断IRQ可以输出一个低电平,进而可产生(下降沿/低电平)中断,此时就可以将该引脚设置为上拉输出,使中断条件满足。
③同理,器件的外部中断(IRQ)引脚触发中断条件为上升沿触发/高电平触发时,该端口可以选择下拉输入模式。
重点记录:按键与上拉/下拉输入
由图不难看出:当KEY_UP按下后,会接入VCC的高电平,而当按键不按下时,即为悬空状态(无信号输入),此时IO输入是未知的,程序可能卡死在这里或者跑飞。那我们就要用到一个下拉电阻,使该引脚在悬空状态下电平被拉低。即按键KEY_UP按下为高电平,不按下为低电平。
同理,当KEY0、KEY1、KEY2三个按键按下时会接入GND的低电平,而不按下时输入未知。为了避免程序跑飞,采用上拉电阻,让按键按下时为低电平,按键松开为高电平。
全部0条评论
快来发表一下你的评论吧 !