目录
端口输出数据寄存器(GPIOx_ODR)(x=A....E)
端口位设置/清除寄存器(GPIOx_BSRR)(x=A.....E)
STM32GPIO端口位基本结构图:
图片描绘了STM32GPIO口内部的基本结构:左边寄存器 中间驱动器 右边I/O口引脚
结构图I/O引脚:
由于STM32芯片内部电路所能承受的电压有限,因此I/O引脚向里是两个保护二极管,他们的作用是:当有静电等瞬间电压波动进入I/O引脚时,若此波动电压大于3.3V(VDD),则上方的保护二极管导通,将电压引入电源,让电源网络吸收;若此波动电压小于0V(VSS),则下方的保护二极管导通。
GPIO输入输出总结
STMO2的GPIO的输入输出方式有以下8种:
(1) GPIO_Mode_AIN 模拟输入:
(2) GPIO_Mode_IN_FLOATING浮空输入:
(3) GPIO_Mode_IPD 下拉输入:
(4) GPIO_Mode_IPU 上拉输入:
(5) GPIO_Mode_Out_OD开漏输出:
(6) GPIO_Mode_Out_PP推挽输出:
(7) GPIO_Mode_AF_OD复用开漏输出:
(8) GPIO_Mode_AF_PP复用推挽输出。
1.GPIO引脚的四种输入方式及其特点:
1)上拉输入(GPIO_Mode_IPU)
上拉输入,就是信号进入芯片后被内部的一个上拉电阻上拉,再经过施密特触发器转换成0、1信号,因此,复位后该引脚电平为高电平。
2)下拉输入(GPIO_Mode_IPD)
下拉输入,就是信号进入芯片后被内部的一个下拉电阻下拉,再经过施密特触发器转换成0、1信号,因此,复位后该引脚电平为低电平。
3)模拟输入(GPIO_Mode_AIN)
信号进入芯片后不经过上拉电阻或者下拉电阻,也不经过施密特触发器,经由另一线路把电压信号传送到片上相应的外设模块。 例如,通常是ADC模块,然后由ADC采集电压信号。因此,可以将这种方式理解为模拟输入的信号是未经处理的信号。
4)浮空输入(GPIO_Mode_IN_FLOATING)
信号进入芯片内部后,既没有经过上拉电阻也没有经过下拉电阻,只经由施密特触发器输入。如果被配置成这个模式,用电压表测量其引脚电压为1伏左右,是个不确定值。
由于其输入阻抗比较大,所以一般把这种模式用于标准的通信协议,如IIC、USART等。