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

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

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
GPIO 简介
3 n! R/ e' b9 b+ s' o0 |: G. N3 D1 Z- n8 _
GPIO=General Purpose Input Output,通用输入输出。简称为“IO口”。4 f: ~. O4 v7 P  h# j
GPIO 是通用输入输出端口的简称,STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组,每组有 16 个引脚,如型号为 STM32F4IGT6 型号的芯片有 GPIOA、GPIOB、GPIOC至 GPIOI 共 9 组 GPIO,芯片一共 176 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。
' q& ?: L" G, t" `8 `$ s+ U
5 R/ q& m9 }7 i' l" \. y最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,GPIO口是怎么被控制的呢?通过软件代码。需要亮灯的时候调用GPIO口拉高的函数,需要熄灯的时候调用GPIO拉低的函数,即可实现控制。如把 GPIO 引脚接入到 LED 灯,那就可以控制 LED 灯的亮灭。最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。
7 K& c. n) z, T; [9 ]4 `9 @
* S! H+ A6 _# bGPIO除了简单的输入输出之外,还可以做一些相对复杂的操作,例如模拟I2C或SPI数据线、ADC电压检测、输出PWM波形等。4 E  T% Z% l# w( h
( F2 l* D& X/ H5 B# a% i6 H% _
GPIO框图& F7 @1 b) I/ q* w- G2 ]& ~
5 [( E! a2 d& B- H; _- y4 A) B
D@OUA7V[@P2`)3Y0J$Y$)IQ.png ) {- M8 |/ O2 Z
: e) d! |* g: }5 G" i* _! d) K6 y
保护二极管及上、下拉电阻
$ F# i3 L4 @1 S) y
; B! z; ?0 M8 a: o, g- I# j$ z通过上、下拉对应的开关配置,我们可以控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电压为低电平,这样可以消除引脚不定状态的影响。如引脚外部没有外接器件,或者外部的器件不干扰该引脚电压时,STM32 的引脚都会有这个默认状态。也可以设置“既不上拉也不下拉模式”,我们也把这种状态称为浮空模式,配置成这个模式时,直接用电压表测量其引脚电压为 1 点几伏,这是个不确定值。所以一般来说我们都会选择给引脚设置“上拉模式”或“下拉模式”使它有默认状态。1 f& g  b7 K% Y# s5 u* Q$ v- \

) ?+ N: ~  _# {. YSTM32 的内部上拉是“弱上拉”,即通过此上拉输出的电流是很弱的,如要求大电流还是需要外
& T! q, k8 k. a部上拉。通过“上拉/下拉寄存器 GPIOx_PUPDR”控制引脚的上、下拉以及浮空模式。
, N. O$ W1 ?0 y/ k5 P用于输入模式时,可设置为上拉、下拉或浮空模式
' k5 h$ m! C& E+ y& M( J' o
" ~( k4 X, X" m9 FP-MOS 管和 N-MOS 管6 [% f8 @/ g1 A. t

9 c# T8 @% w4 d! e" h输出模式部分,线路经过一个由 P-MOS 和 N-MOS 管组成的单元电路。这个结构使 GPIO 具有了“推挽输出”和“开漏输出”两种模式。
) a0 u0 `  w! o- c5 R/ s推挽输出模式,是根据这两个 MOS 管的工作方式来命名的。输入高电平时,上方的 P-MOS 导通,下方的 N-MOS 关闭,对外输出高电平,输入低电平时反之。2 ?7 B$ T4 F" G9 L" X: z& m% V5 f7 v
推挽输出的低电平为0 伏,高电平为3.3 伏,它是推挽输出模式时的等效电路。
4 a( J6 P& P4 k9 D. q0 |0 x' V. I$ U$ y& O4 q& C0 o+ D
通过“输出类型寄存器 GPIOx_OTYPER 可以控制 GPIO 端口是推挽模式还是开漏模式。
3 A! M* J" y1 F6 L( L+ u
! L1 ~) z! r0 A0 f输出数据寄存器& K, V2 h8 ^( ^$ F
$ a7 l, _5 e8 l3 h( @/ K- w7 W
置位/复位寄存器GPIOx_BSRR可以通过修改输出数据寄存器的值从而影响电路的输出。) g5 F; W  o/ ]! @

% m' f9 }+ a* z复用功能输出9 G: O& k* [; m' D4 r

1 {' B. O5 ]. {- _1 o, D使用 USART 串口通讯时,需要用到某个 GPIO 引脚作为通讯发送引脚,这个时候就可以把该 GPIO 引脚配置成 USART 串口复用功能,由串口外设控制该引脚,发送数据。
& H! t; Q0 s+ {) o' \# [: }% y4 J8 s& I! K) G+ S
输入数据寄存器
+ z% `9 {! z+ |+ x8 s" E3 ~& J# R- C7 S
连接到施密特触发器,信号经过触发器后,模拟信号转化为 0、1 的数字信号,然后存储在“输入数据寄存器GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO 引脚的电平状态。
/ r5 `  H' |5 k0 w3 C7 L' f1 U1 t7 m3 C/ `; y
复用功能输入# R3 H+ |. Y. i4 N
" H2 R4 o7 f; ]3 F% k' B
和复用功能输出一致,发送变接收。
( D. N. l& A' ]5 ?) U4 J+ _6 {
- \8 H! j% G1 z$ x) z模拟输入输出
" t, g' X  t* Q/ O( q5 r" d/ a$ J4 ]
+ K0 Q+ U$ A" C5 P7 Z) m: |当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能,此时信号是不经过施密特触发器的,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。反之作为模拟输出,当 GPIO 用于模拟功能时 (包括输入输出),引脚的上、下拉电阻是不起作用的,即使在寄存器配置了上拉或下拉模式,也不会影响到模拟信号的输入输出。
5 U- Z" b4 V4 j0 j
1 q6 V% c1 w% b5 k# x: A正点原子F429原理图
& a+ H6 B  G8 f# F) A/ l

$ G7 e; v; O% E- O: k UV80S3YCC}~Z3ZDZ](AYTG1.png
/ ?: I! u5 b5 Y  Z
  K( J: z: B8 _4 i# U- X图中PB0和PB1就是控制正点原子板子上两个LED灯的IO口。
. p, f% Z/ _( W4 i- A! \3 D$ J! p4 _* ]0 C8 t1 P

8 C) [9 d7 g7 k* S! u. i+ J
收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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