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

【经验分享】STM32_H7_GPIO

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:42
声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。
  M4 k7 q: ?5 Z. q% w- O: n1 C4 T/ w( y- k) y4 S& T4 L1 v
STM32_H7_GPIO( @; x7 o8 ]% K8 I  a4 r9 e, J' V

: ^/ T% t& h& U功能介绍
' K- y6 [8 u& Y( n  E-摘抄手册$ X; Z' F2 G* m5 F' Q9 x. G" h

# ]0 v: y+ O' V) }$ L/ i简介
( ~( v6 ~5 t+ C* x: g5 V: L( o每个通用 I/O 端口包括 :1 h# R7 t' b0 a$ I7 D

/ f7 s% {8 D5 I5 S5 s4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)$ T3 d0 U" D) P: l
2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)
" y) q9 V( M1 u$ H1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。
5 w- e" n( k( h. v# L( e% P/ N此外,所有 GPIO 都包括 :
- M3 B0 q1 i! P; x0 t1 z4 q" g
) W8 B1 U( u# I& \1 个 32 位锁定寄存器 (GPIOx_LCKR)% W9 R1 K( x. b
2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。
; P0 d4 h4 t1 f0 V3 B主要特性
6 W( l- y% E+ z$ v& o1 l6 {: T! q从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据" }& ?" u2 C, s& U6 N& d
将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)" D" \4 i. Y( N; W! R' b
可为每个 I/O 选择不同的速度
$ S8 G5 _2 I6 {: S, V% j$ I置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限
, I: t2 K& }- Y% ]锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置
, H8 \! N9 i* ~# n2 n1 l- s4 Y) L快速翻转,每次翻转最快只需要两个时钟周期2 k  ^2 X: _) i  e% K
引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种
/ D' ~6 n8 x5 m6 B) X; N可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式:% u4 }7 ^2 A0 H  [

. j" L9 v$ n6 X, F; x' i; T! kGPIO框图8 Z5 Y0 `5 X8 l
# o4 l, X" t( u" P! J1 P8 F
20200312130916898.png 3 r3 L) h6 `' d( }
0 T) H2 l; x$ k# n' I' k+ C
框图说明:% h, f; d; q1 j
只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式:
3 G" @$ Z# G8 P7 ^6 w8 z
5 Y: }' m) z; U- O输入浮空
% V: J& \9 h* f; D2 e, X输入上拉7 O8 }4 w7 w6 H) f0 }
输入下拉
  y3 Y3 u8 B, Z/ `, v模拟输入/ A7 m" E% W2 J$ x
开漏输出0 A& `" Q1 P  o2 i1 }) A
推挽输出  v8 ?& X% O0 Y8 m) H
复用功能推挽
. y9 N- ^9 ^7 O6 s9 r. m复用功能开漏
4 `" i% m3 c8 x2 X具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。( a) D$ Z9 _& }9 T& y
$ c1 T4 q2 ~) D' Z
补充描述
  n" l) P5 i2 `6 S% c" b上电复位后引脚状态:4 T9 o6 A- T9 Z* G& Z6 Q" k
  g* w6 `+ `; ^3 S- P: `0 k+ L
在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外:0 G$ ?& F' w1 a" i; S1 U$ l
* C8 n" V$ s0 B7 }
PA15:JTDI 处于上拉状态
9 B8 [4 x6 w. R$ pPA14:JTCK/SWCLK 处于下拉状态
( i: E3 H" e- TPA13:JTMS/SWDAT 处于上拉状态
% t4 S$ K: G  e. H0 jPB4:NJTRST 处于上拉状态7 x+ d4 ]! l. \: v5 X' _! `4 b
PB3:JTDO 处于浮空状态
& q1 C2 R; c4 p. G  ^) R0 B, m- m

/ k& s. O% b  _. M输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平# y, i& p: `9 L4 U$ @, n
) w# B5 e; x' J0 m9 c
I/O 引脚复用功能复用器和映射! @0 e: N- ?3 O% H9 X' a
: o' x8 X" `4 l- i+ S& o# y. Q
要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作:* G; z- Y( X5 n% C
; E* J3 R, e, k; p: [
在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。/ o6 p- x8 V9 x5 w8 \: l5 T
通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。' B7 `% K7 h& Z6 W( ]
在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。
3 ]' o4 ~( v& g: c: `, ?  z对于 ADC 和 DAC等外设,请查阅手册后进行操作。
; @3 Q+ v/ f- ?! N4 ~3 B2 d/ R3 o, B2 I  N; `3 ^$ E) w
GPIO寄存器
, _: |  f* l! r' t7 ^- M请查阅手册(RM0433)第11.4节。
* v6 w8 K7 b. R7 y+ v  o! \8 O9 ~+ r5 i* N2 ~% _" M
STM32CubeMX
! n9 N( R7 G+ i. ?& cSTM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例):: M( E# k4 P' |" g3 k# V1 x
: F' N# r8 {, m# {" O
20200228135621177.png
% Z# j* }, Y9 [( m
* ^8 a% ~1 Y& U; b# j
8 W" H7 J% {  W2 Y" k: z5 y: o* l. i
HAL/LL库函数功能说明
: j: B5 \6 x% s3 l控制GPIO相关的HAL库函数不多,只有8个,列表如下:
' Y2 w- M  X" {# ^# s, D0 [+ d6 y
. s: G/ z  F& G' j" N; n! c  [8 N
`{Q(7G2EMBILGZMG9~2K_9F.png

5 I3 e" H7 L: K0 o6 G" w* u" U
4 F; ]3 ?" ]0 t详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。
! y$ \4 W& ]# H6 ^
7 |, b1 d, l6 O7 LDEMO
( w+ Q. ^; D& d$ d所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。3 q9 v2 f3 D0 C2 [7 P: J$ f

( x# Z5 Z- {3 [! V4 }
N7{()2%}}ATUX_)RV%MSIMM.png

' ~: e" X- F4 t; b* K" A; |4 d. M6 s6 {8 `4 b4 n
" ?% J% L: ?* h  U
收藏 评论0 发布时间:2021-12-18 17:42

举报

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