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 复用开漏/推挽输出 电路图

相关推荐
lucy1530275107927 分钟前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
scan113 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu0114 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
Mortal_hhh15 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司15 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比16 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie16 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔16 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@17 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^1382879887219 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源