你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F429IGT6 GPIO相关学习汇总(STM32F429/F767/H743)

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
GPIO 简介
9 s9 y2 m7 s: ?0 @; |9 B* C% X- Y% U' R3 O5 o
GPIO=General Purpose Input Output,通用输入输出。简称为“IO口”。# }* P# K; A1 G8 f( q* D
GPIO 是通用输入输出端口的简称,STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组,每组有 16 个引脚,如型号为 STM32F4IGT6 型号的芯片有 GPIOA、GPIOB、GPIOC至 GPIOI 共 9 组 GPIO,芯片一共 176 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。
# w. |( i! g  I2 g8 c
2 x+ ]! k7 V! F9 }7 Z/ n最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,GPIO口是怎么被控制的呢?通过软件代码。需要亮灯的时候调用GPIO口拉高的函数,需要熄灯的时候调用GPIO拉低的函数,即可实现控制。如把 GPIO 引脚接入到 LED 灯,那就可以控制 LED 灯的亮灭。最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。) M; O: {8 m8 S5 K( r
% B9 b- @/ s5 C1 g3 e4 r/ v9 e( q
GPIO除了简单的输入输出之外,还可以做一些相对复杂的操作,例如模拟I2C或SPI数据线、ADC电压检测、输出PWM波形等。
. G1 H2 a4 a7 i" X9 c7 ?4 E
. c  x3 ^; @0 \  P/ _) V$ r9 f- }GPIO框图" F, b' K" T: _1 E. p3 C$ L/ T
3 e9 M: ~' T3 ^, P$ W3 x: {
D@OUA7V[@P2`)3Y0J$Y$)IQ.png ) U  F# V% r0 t* D

; o; n; B0 \. O# m保护二极管及上、下拉电阻
% P: S% S; I. D6 E3 L2 F
- A& L- g- w/ ~通过上、下拉对应的开关配置,我们可以控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电压为低电平,这样可以消除引脚不定状态的影响。如引脚外部没有外接器件,或者外部的器件不干扰该引脚电压时,STM32 的引脚都会有这个默认状态。也可以设置“既不上拉也不下拉模式”,我们也把这种状态称为浮空模式,配置成这个模式时,直接用电压表测量其引脚电压为 1 点几伏,这是个不确定值。所以一般来说我们都会选择给引脚设置“上拉模式”或“下拉模式”使它有默认状态。( l# H2 O% i6 A- R
0 I3 z: f$ }/ A, Z  c- ~; {
STM32 的内部上拉是“弱上拉”,即通过此上拉输出的电流是很弱的,如要求大电流还是需要外
, t8 j& }" N0 K! n. F部上拉。通过“上拉/下拉寄存器 GPIOx_PUPDR”控制引脚的上、下拉以及浮空模式。# i' o7 Y( ~9 O; i# j9 a
用于输入模式时,可设置为上拉、下拉或浮空模式
/ A$ |$ G$ e( b2 o  ]1 A6 `& l9 f
9 Y: Z- L6 w# U; {P-MOS 管和 N-MOS 管
7 X( V# n' |" I& u" T& `. C" j; I
8 I7 ?7 u3 z- l8 X, a输出模式部分,线路经过一个由 P-MOS 和 N-MOS 管组成的单元电路。这个结构使 GPIO 具有了“推挽输出”和“开漏输出”两种模式。
; @/ F7 d  A% `% L( C8 Z推挽输出模式,是根据这两个 MOS 管的工作方式来命名的。输入高电平时,上方的 P-MOS 导通,下方的 N-MOS 关闭,对外输出高电平,输入低电平时反之。
7 u, B, H+ H) w' M3 J9 O5 O推挽输出的低电平为0 伏,高电平为3.3 伏,它是推挽输出模式时的等效电路。( j) a- W' s0 p' s5 ~' e  }

1 I" W. M9 R8 \9 q8 M6 i# G0 s# N通过“输出类型寄存器 GPIOx_OTYPER 可以控制 GPIO 端口是推挽模式还是开漏模式。
' s' s& ?7 h7 Z7 k# F8 w( b
* m2 w- j8 y8 y1 v6 G% _+ Y/ M9 f输出数据寄存器
) }/ V( O8 J$ b8 x1 o$ }* M( R
" m8 y( m) j, c* ?) t) ]+ Y置位/复位寄存器GPIOx_BSRR可以通过修改输出数据寄存器的值从而影响电路的输出。
, z" a4 X# W# k7 l  \0 {
; r0 g; h6 Y: T& L& V4 A复用功能输出' s: W- Q. ]- M4 Y# }

# W' T+ O$ @, q+ Y- X3 e使用 USART 串口通讯时,需要用到某个 GPIO 引脚作为通讯发送引脚,这个时候就可以把该 GPIO 引脚配置成 USART 串口复用功能,由串口外设控制该引脚,发送数据。
; y$ W/ w( |7 O  `" p% I6 A$ ^1 B
输入数据寄存器9 b7 M8 Z- D. F2 O! C
: l5 l- p0 `+ `( ]6 v$ H
连接到施密特触发器,信号经过触发器后,模拟信号转化为 0、1 的数字信号,然后存储在“输入数据寄存器GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO 引脚的电平状态。
9 c- U+ t) h" a* @+ C0 G2 c: l- F
- v5 J8 d1 b1 `* K, [9 B复用功能输入4 ~! ^8 T- \; M9 Y( b$ f# U& }
3 i% x6 c/ _: g8 o
和复用功能输出一致,发送变接收。
" z. Y. V/ O* K' u
5 j6 r0 h) o' E, L8 D模拟输入输出) E: q: U: ]! D

! e6 z7 j2 I1 f. Z8 x* c当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能,此时信号是不经过施密特触发器的,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。反之作为模拟输出,当 GPIO 用于模拟功能时 (包括输入输出),引脚的上、下拉电阻是不起作用的,即使在寄存器配置了上拉或下拉模式,也不会影响到模拟信号的输入输出。
4 g/ C: @3 x) r2 t+ a8 c/ h
0 T8 f, h" Q+ m0 z7 C1 |正点原子F429原理图
5 Y" ?# v* ~4 X* h

. p! L) h0 Y3 u! z UV80S3YCC}~Z3ZDZ](AYTG1.png - d/ O  W# f( E: f1 r! K
( @) X, @7 @+ T3 w( g% j, ?
图中PB0和PB1就是控制正点原子板子上两个LED灯的IO口。' o6 o6 k7 s6 q. E; O3 E9 V2 Z

& D# h: |' J" ]9 ?& f# @! S3 h$ A* T) B7 }
赞 收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版