1GPIO介绍:
GPIO介绍:通用输入输出口(general purpose input output)
可配置为8种输入输出模式。
引脚电平:0-3.3v,部分引脚可容忍5v,最大输出3.3v
- 输出模式下可以控制端口输出高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序。
输入模式可以读取端口高低电平或者电压,读取按键输入,外接模块电平信号输入、ADC电压采集,模拟通信协议接受数据等。
所有GPIO均挂载在APB2外设总线上,其中GPIO外设的名称是按照GPIOA,GPIOB,GPIOC等来命名。
每个GPIO外设共有16个引脚,编号0-15.例如GPIOA的引脚称为PA0,GPIOB的引脚称为PB0等,不同名称对应片上不同引脚!!
GPIO内部主要是寄存器和驱动器,完成对电平的输入输出读取等操作。每一位对应一个引脚。Stm32,所以内部寄存器都是32位的,低16位对应有端口,高16位没有对应有端口。驱动器用来增强信号驱动能力。寄存器用来负责记录信息。
GPIO挂载演示
2电路结构:
电路结构分为上部分和下部分,上部分为输入部分,下部分为输出部分。
保护二极管:防止电压高于3.3或者低于0v保护电路。
输入部分:
可以通过开关选择上拉模式,下拉模式,浮空输入模式。防止信号不稳定引起输入不确定现象,进行增强确定效果。
上拉模式:默认高电平输入
下拉模式:默认低电平输入
肖特基触发器:对输入进行整形(将信号确定为高电平或者低电平):大于某阈值,升为高,低于下限输出低,模拟输入不需要整形,所以就直接输出了,
通过复用功能输出或者输出到寄存器中。
※不初始化引脚,默认浮空状态。
模拟输入:
模拟输入模式为ADC专用模式,此时上拉下拉被关闭,防止对信号产生影响,不使用触发器,关闭输出部分。直接将信号输出到片上外设。
输出部分:
通过位设置清除寄存器可以操作单位数据(写1:需要操作位写1,不需要操作位写0。清0:相应位写1,其余0),而输出数据寄存器只能全位操作。
同时我们也可以看到,可以通过片上外设进行输出进行控制。
在输出模式中,我们也可以控制输出控制来控制MOS管来达到不同的输出模式:推挽输出、开漏输出、关闭。
(MOS管:一种开关,通过信号控制开关导通和关闭)
推挽输出:
两个MOS管都工作,stm32具有对io绝对控制权,1就vdd直接到io,0就vss到io
开漏模式:
仅nmos工作,pmos无效,(直接无效而不是控制着无效:1时下管断开,相当于输出直接断开,高阻模式。)0时下管导通输出低电平,这种模式只有低电平有驱动能力。
关闭:
IO仅作为输入模式用。
复用开漏输出、复用推挽输出,引脚电平由片上外设控制
GPIO使用:
1开始时钟:
RCC开启APB2的时钟。
2初始化函数GPIO_Init
用函数初始化GPIO,对于结构体不填写的内容(例如输入模式下输出部分参数就不用填写了),用GPIO_StructInit每一个参数按默认值填入