一. GPIO简介
1.GPIO表示通用输入输出口,有8种输入输出模式,引脚电平为0-3.3V,部分引脚可以容忍5V,容忍5v指输入端口可以5v,但是输出最高仍为3.3v。
2.输出模式下可以控制端口输出高低电平(通过不同的输出模式),用来驱动LED,控制蜂鸣器,模拟通信协议输出时序等。
3.输入模式下可读取端口的高低电平或电压,用来读取按键输入(最常见),外界模块的电平信号输入,ADC电压采集,模拟通信协议接收数据等。
二.GPIO基本结构
1.左边为APB2外设总线,一般情况所有外设挂载再APB2总线上
2.gpio模块中,内核通过APB2总线对寄存器进行读写,达到读取和输出电平的功能,寄存器的每位对应一个引脚,寄存器1为高电平,0为低电平,驱动器负责增加驱动能力
三.GPIO位结构
1.左边3个是寄存器,中间部分为驱动器,
2.右边vdd接3.3v,vss接0v,确保电压在0-3.3v
3.中间上部分的vdd和vss,如果上面导通,下面断开就是上拉输入(默认为高电平的输入模式),反之下拉输入(低),两个都断开,则是浮空输入模式
4.TTL肖特基(即施密特触发器),作用是对输入电压整形
四.输出部分:
1.由片上外设和输出数据寄存器控制输出,输出数据寄存器
2.写入通过片上外设或者输出数据寄存器,输出数据寄存器只能整体读写,具体某一位的控制通过位设置/清除寄存器来实现,例如 方法1:先读出寄存器,再通过按位与和按位或的方式来更改某一位,然后再将更改后的数据写回去,C语言中就是&=和|=的操作,方法2:通过设置位设置/清除寄存器,在对应的位写1,其他位写0
2.推挽输出模式下,p-mos和n-mos均有效,数据寄存器为1时,上管导通,下管断开,输出直接接到vdd,就是输出高电平,反之上断下开,vss,低。此模式,高低电平均有较强的驱动能力,因此又称为强推输出模式。
3.开漏输出模式下,p-mos无效,n-mos有效,数据寄存器为1时,下管断开,数据寄存器为0时,下管导通。此模式下仅有低电平有驱动能力,高电平无驱动能力。可以作为通信协议的驱动方式,或者输出5V的电平信号。
4.关闭:引脚配置为输入模式,关闭
五.GPIO模式
开漏输出和推挽输出都可以输出有驱动能力的低电平,但只有推挽输出能输出有驱动能力的高电平。
六.