STM32F103C8----GPIO(跟着江科大学STM32)

一,GPIO简介

GPIO(General Purpose Input Output)通用输入输出口

可配置为8种输入输出模式

引脚电平:0V~3.3V(0V),部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

二,GPIO基本结构

所有的GPIO都是关在APB2总线上。在控制板上有如下针脚

三,GPIO位图

3.1 保护二极管

先看右边的的两个保护二极管,VDD接3.3V,VSS接地。当右侧IO引脚输入大于3.3V不会对内部电路产生伤害。

如果右侧IO针脚输入了一个负电压,那么在VSS和IO会形成回路,对内部起到保护作用。

只有当输入电压是0-3.3V,才会进入系统内部 。

3.2 上拉输入

3.3 下拉输入

3.4 浮空输入

输入不是高电平就是低电平,当外部IO什么都不接,这个时候处于浮空状态,极易受外界干扰,就不能确定输入的是高电平还是低电平。所以我们在程序中常用上拉或者下拉输入。

上拉输入:默认输入高电平

下拉输入:默认输入低电平

3.5 肖特基触发器

只在大于上限或者小于下限时做变化,所以简易逻辑如下图 ,

低于上限不一定会发生变化,高于下限也不一定会变化。

有效避免电压波动导致的输入抖动情况。

3.6 推婉输出

推婉输出模式下,输出1,P=MOS导通 ,N-MOS断开,I/O输出高电平

输出0,P=MOS断开 ,N-MOS导通,I/O输出低电平

推婉输出有绝对的控制权。也较强输出。

3.7 开漏输出

在开漏输出模式下,P-MOS无效,只有N-MOS工作。

在多级通讯中,这种模式避免设备之间的相互干扰。

也可用于5V的电平信号输出。当寄存器输出0,是N-MOS导通,输出低电平。

当输出1时,由外部的上拉电阻拉高电平。实现5V通电。

3.8 关闭输出

综上如下表

|------|---------|-------|-------|--------------------------|
| | 输出寄存器的值 | P-MOS | N-MOS | 输出 |
| 推婉输出 | 1 | 导通 | 关闭 | 高电平 |
| 推婉输出 | 0 | 关闭 | 导通 | 低电平 |
| 开漏输出 | 1 | 无效 | 关闭 | 高阻模式(只有低电平有驱动能力。比如I2C引脚) |
| 开漏输出 | 0 | 无效 | 导通 | 低电平 |
| 关闭输出 | 1 | 无效 | 无效 | 端口关闭,外部信号控制 |
| 关闭输出 | 0 | 无效 | 无效 | 端口关闭,外部信号控制 |

四,GPIO模式 简易电路图

通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

4.1 程序中代码配置

程序中的GPIO模式配置 枚举如下

cpp 复制代码
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;

GPIO的初始化配置代码举例(A0针脚,推婉输出)

cpp 复制代码
	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				//GPIO引脚,赋值为第0号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	
	GPIO_Init(GPIOA, &GPIO_InitStructure);					//将赋值后的构体变量传递给GPIO_Init函数
															//函数内部会自动根据结构体的参数配置相应寄存器
															//实现GPIOA的初始化

4.2 浮空/上拉/下拉输入 电路图

4.3 模拟输入 电路图

4.4 开漏/推挽输出 电路图

4.5 复用开漏/推挽输出 电路图

相关推荐
北京阿尔泰科技厂家1 小时前
CPCIe-76F1G控制器:国产化高性能嵌入式解决方案
嵌入式硬件·控制器·工业自动化·数据采集卡·国产化控制器
Truffle7电子1 小时前
STM32【H7】理论——通信
stm32·单片机·嵌入式硬件
zhonghaoxincekj1 小时前
晶体管的定义,晶体管测量参数和参数测量仪器
功能测试·单片机·学习·测试工具·单元测试·制造
MAR-Sky2 小时前
keil5使用STlink下载程序到stm32后不自动运行的解决办法
stm32·单片机·嵌入式硬件
Blossom.1182 小时前
把AI“浓缩”到1KB:超紧凑型决策树在MCU上的极限优化实战
人工智能·python·单片机·深度学习·决策树·机器学习·数据挖掘
深圳市青牛科技实业有限公司4 小时前
在电力系统、电子设备制造等领域,变压器测试感量,电桥内阻如何选择
嵌入式硬件·音视频·制造·立体声收录机·盒式录音机·电子烟
充哥单片机设计6 小时前
【STM32项目开源】基于STM32的智能厨房环境监控系统
stm32·单片机·嵌入式硬件
爱倒腾的老唐6 小时前
03、51 单片机介绍
单片机·嵌入式硬件
国科安芯7 小时前
抗辐照MCU芯片在低轨商业卫星原子钟中的适配与优化
单片机·嵌入式硬件·fpga开发·架构·risc-v
赋能大师兄14 小时前
单片机3.3V和5V电压等级
单片机·3.3v·5v