STMCU小助手
发布时间:2022-5-3 14:17
|
一、GPIO简介 GPIO就是通用I/O(输入/输出)端口,是STM32可控制的引脚。 STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 二、GPIO工作模式# J8 P" n/ z `, ]+ h( v8 } 1. 四种输入模式 [7 D. Q: J0 a `1 Y. p; u. c GPIO_Mode_IN_FLOATING 浮空输入模式6 B3 @ n2 h0 h- ~ GPIO_Mode_IPU 上拉输入模式 GPIO_Mode_IPD 下拉输入模式 GPIO_Mode_AIN 模拟输入模式 2. 四种输出模式 GPIO_Mode_Out_OD 开漏输出模式 GPIO_Mode_Out_PP 推挽输出模式( b' n+ [$ Z" B/ Q GPIO_Mode_AF_OD 复用开漏输出模式 GPIO_Mode_AF_PP 复用推挽输出模式8 h1 }2 D* b7 r) C; O' i 三、GPIO工作原理解析2 B' p' S" v1 d* T0 b 1. I/O端口的基本结构框图
2. I/O端口的基本结构介绍 保护二极管2 r7 n0 F2 S* Y Y, f$ |/ U& r/ c 作用: 防止引脚外部输入过高和过低的电压,防止不正常电压引入芯片,导致芯片烧毁。* J# B6 r( p2 J5 V* g! ^% U, Q 当引脚电压高于VDD时,上方的二极管导通。 当引脚电压低于VSS时,下方的二极管导通。& @! G( q( j8 a 8 O1 _+ x/ B. ^. U* C8 G/ W) Y 上拉电阻和下拉电阻4 N4 m8 ]6 s8 { 作用: 控制引脚默认状态的电压。( K& I( v: `+ S 开启上拉的时候,引脚默认电压为高电平。 开启下拉的时候,引脚默认电压为低电平。 TTL肖特基触发器 TTL肖特基触发器其实可以理解为用肖特基管构成的施密特触发器。: C1 c8 m8 V2 Y2 T- C7 c$ |, R 作用: 将相对缓慢变化的模拟信号变成矩形信号。6 _+ D: I3 q7 P" | E 当输入电压高于正向阈值电压,输出为高。2 Q; {0 Z- F0 ]4 e- N3 B6 b 当输入电压低于负向阈值电压,输出为低。 P-MOS管和N-MOS管( g: g# }- e. M# b9 q 作用: 使得GPIO具有“推挽输出”和“开漏输出”的模式。6 n+ [; I% V) E P-MOS管: MCU输出为 1 导通,低电平关闭。& S4 I8 {9 k7 b0 v N-MOS管: MCU输出为 0 导通,高电平关闭。 3. GPIO工作模式解析1 M( _) Y, y* Q2 m8 K3 Q 浮空输入模式: o6 C) A) ]$ W% O 浮空输入模式下,I/O端口的电平信号直接进入到输入数据寄存器。# \0 t: i7 s4 a" g MCU直接读取I/O口电平,I/O的电平状态是不确定的,完全由外部输入决定。. X- i$ g6 ^% R" {/ T& s * F# x, A0 R% {+ m
上拉输入模式 上拉输入模式下, I/O端口的电平信号经过上拉电阻进入到输入数据寄存器。
- M8 `) F4 A! t7 Y- }5 [
STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。 下拉输入模式 下拉输入模式下, I/O端口的电平信号经过下拉电阻进入到输入数据寄存器。8 m' S2 G: R! f: l # J, q! J+ X0 y C/ e2 H5 M6 g; ]" a
- j& D5 k& ?1 `7 } 模拟输入模式 模拟输入模式下, I/O端口的电平信号不经过TTL肖特基触发器,直接进入ADC模块,并且输入数据寄存器为空 ,MCU不能在输入数据寄存器上读到引脚状态。 在模拟输入模式下,上拉电阻和下拉电阻是不起作用的,即使配置上拉和下拉模式,也不会有作用。" Y& L4 F2 b- y6 U1 r E
开漏输出模式1 e4 y6 d3 j) J( P5 ^. E+ @/ Z; ~# R 开漏输出模式下, P-MOS管不工作,只有N-MOS管工作,MCU只能控制输出低电平。 MCU输出低电平的时候,N-MOS管导通,I/O引脚输出低电平。 MCU输出高电平的时候,N-MOS管关闭,I/O引脚悬空状态。
推挽输出模式 推挽输出模式下, P-MOS管和N-MOS管都工作,MCU可以控制输出高电平和低电平。 MCU输出为 0 的时候,N-MOS管导通,I/O引脚输出低电平。 MCU输出为 1 的时候,P-MOS管导通,I/O引脚输出高电平。
! }5 K( E7 u) s 复用开漏输出模式 复用开漏输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。
# D6 ]9 E6 C; b6 r. | 复用推挽输出模式' L% {0 N' m# B! j 复用推挽输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。- u6 l, \5 i' V* ]6 h% v
8 k- P% v% A9 K: D ! J2 o( {" X( V* q: L |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版