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

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

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
GPIO 简介3 d% G9 G' Z5 S. y4 q* o# [
+ H! A" H# x% t/ W
GPIO=General Purpose Input Output,通用输入输出。简称为“IO口”。/ l. {1 W4 ~8 e/ E+ M5 R; `  i! g( C
GPIO 是通用输入输出端口的简称,STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组,每组有 16 个引脚,如型号为 STM32F4IGT6 型号的芯片有 GPIOA、GPIOB、GPIOC至 GPIOI 共 9 组 GPIO,芯片一共 176 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。
: n5 h! V, l9 b1 x% x; ^- X7 M' t& [2 O  w
最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,GPIO口是怎么被控制的呢?通过软件代码。需要亮灯的时候调用GPIO口拉高的函数,需要熄灯的时候调用GPIO拉低的函数,即可实现控制。如把 GPIO 引脚接入到 LED 灯,那就可以控制 LED 灯的亮灭。最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。5 ]" |# h, b, H: k6 d

( ^5 v, q( F& u5 z$ B* R5 V, r& n5 OGPIO除了简单的输入输出之外,还可以做一些相对复杂的操作,例如模拟I2C或SPI数据线、ADC电压检测、输出PWM波形等。
; N' R, J% P. h1 B* E$ C0 k0 G8 \0 X) a- w5 L9 P0 I6 h  w
GPIO框图/ L4 z1 P' ?2 ?5 X1 A% ]7 c
& D/ h7 Z* U7 x- d; A* ]
D@OUA7V[@P2`)3Y0J$Y$)IQ.png # K0 g0 d8 O2 T+ ~8 r2 T; V- U
7 P- u: K; g1 g5 ^: s7 U
保护二极管及上、下拉电阻3 H* E% N/ Z7 D& b4 R# `+ N; }: y+ H

- T2 o1 S, d. s% C* H0 f2 u! X通过上、下拉对应的开关配置,我们可以控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电压为低电平,这样可以消除引脚不定状态的影响。如引脚外部没有外接器件,或者外部的器件不干扰该引脚电压时,STM32 的引脚都会有这个默认状态。也可以设置“既不上拉也不下拉模式”,我们也把这种状态称为浮空模式,配置成这个模式时,直接用电压表测量其引脚电压为 1 点几伏,这是个不确定值。所以一般来说我们都会选择给引脚设置“上拉模式”或“下拉模式”使它有默认状态。/ Z+ L3 c3 ]# u. v! N) F

+ d3 {/ L" U& K& |9 c5 `3 ?STM32 的内部上拉是“弱上拉”,即通过此上拉输出的电流是很弱的,如要求大电流还是需要外7 P7 H3 Q# q/ ~3 t0 a
部上拉。通过“上拉/下拉寄存器 GPIOx_PUPDR”控制引脚的上、下拉以及浮空模式。
& `! r, X6 {2 E6 D! J; n' B. E用于输入模式时,可设置为上拉、下拉或浮空模式- ?  Q7 w  Z+ @6 \
5 p/ A/ b  u! G) I
P-MOS 管和 N-MOS 管6 V/ x/ X7 ~/ B' P  z" p

. t7 z* }9 j8 f输出模式部分,线路经过一个由 P-MOS 和 N-MOS 管组成的单元电路。这个结构使 GPIO 具有了“推挽输出”和“开漏输出”两种模式。
9 i" @" B. |5 S4 x9 i推挽输出模式,是根据这两个 MOS 管的工作方式来命名的。输入高电平时,上方的 P-MOS 导通,下方的 N-MOS 关闭,对外输出高电平,输入低电平时反之。
, u. O/ ^, N+ K- f) ]' M0 [推挽输出的低电平为0 伏,高电平为3.3 伏,它是推挽输出模式时的等效电路。
" s6 l" P* @+ ~. w. M6 ?& z& I9 {- Y5 z/ W
通过“输出类型寄存器 GPIOx_OTYPER 可以控制 GPIO 端口是推挽模式还是开漏模式。/ \5 i$ }1 j+ |" ?$ y+ ^
1 v. j: E- D" e. c; l* V2 m' q
输出数据寄存器
; a" K8 L# F/ O4 Y1 j3 M+ A( V
8 u; M5 F3 x! f- c/ t' m$ }置位/复位寄存器GPIOx_BSRR可以通过修改输出数据寄存器的值从而影响电路的输出。- B( \# K6 B% `
) p/ u9 _/ c5 s2 O% C& g3 D
复用功能输出5 B. U5 D0 m3 T9 {  d& q
) `0 H+ p' v5 V; J- s
使用 USART 串口通讯时,需要用到某个 GPIO 引脚作为通讯发送引脚,这个时候就可以把该 GPIO 引脚配置成 USART 串口复用功能,由串口外设控制该引脚,发送数据。4 W0 B8 m  W  Q

8 D3 v. m* c; q9 p$ d. c) U输入数据寄存器
" ^) q0 N- L* e( H
, y/ L0 a# Y6 {. i连接到施密特触发器,信号经过触发器后,模拟信号转化为 0、1 的数字信号,然后存储在“输入数据寄存器GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO 引脚的电平状态。/ {# n7 }( B0 @; u4 Q. b4 |
+ K7 \7 q# o2 y; f( ?6 |& D! Z! _
复用功能输入
$ L5 }; m2 j; P9 B/ g3 {
( H+ l) s' I; T' L$ x! W$ p和复用功能输出一致,发送变接收。7 L, V( r$ c! _. @! M, @9 A7 g

1 H& t9 |- G  w9 }* l8 Y0 T模拟输入输出
" M3 _* |4 `$ F) q1 o* {& i& C1 I9 n$ [
当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能,此时信号是不经过施密特触发器的,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。反之作为模拟输出,当 GPIO 用于模拟功能时 (包括输入输出),引脚的上、下拉电阻是不起作用的,即使在寄存器配置了上拉或下拉模式,也不会影响到模拟信号的输入输出。
/ r1 ~' C; D0 D3 U6 e1 o# e. A% O* j% `% t; V5 T
正点原子F429原理图
4 \% u5 T$ [2 ?
4 }( i0 q, w( L* z3 S. d: O) N
UV80S3YCC}~Z3ZDZ](AYTG1.png , B+ C3 W3 T( ~9 D& H- H# T4 [5 p% u
' E/ y( m% ~; s1 ?$ g) n: |$ X
图中PB0和PB1就是控制正点原子板子上两个LED灯的IO口。9 M/ i& m& a  a
1 Y# h7 _5 O& T8 e

. `; D$ y- R4 w; h" a5 V9 Q7 L  R
收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版