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

【经验分享】STM32 GPIO的功能描述及配置

[复制链接]
STMCU小助手 发布时间:2022-5-9 19:00
前言
5 J% k6 E! l; H+ x/ v: ~& H! N开发了好久的STM32,但一直没有总结博客,今天就来总结一下STM32系列博客,也算是自己记的笔记。# E" r7 A( b0 `0 T4 E/ S, |
第一篇文章就从GPIO开始
) B1 T7 r' T0 g' z- h# LIO口即input & out 输入与输出,单片机控制外设的一个重要方法。. t( _7 E3 j$ X. ^

# Y; n6 U+ N6 I$ z0 S# l9 @6 N) _5 H以下参考STM32参考手册记录。  l9 c+ P% v) A& K2 n. p5 B
1 D; t0 O' R" j! {  c6 o9 w
提示:以下是本篇文章正文内容,下面案例可供参考
6 y( r" ?, z! {+ f& m
1 j) D3 ~- ]2 n# f" X% r$ u7 G% x一、GPIO功能描述( j; N9 ?; F+ E. b% G
首先 STM32 的 IO 口可以由软件配置成如下 8 种模式:7 J$ d# R5 R% g
1、输入浮空
) }3 r' F! z' l7 n) U, W2、输入上拉+ @$ G. Z: f# c+ s
3、输入下拉
; V: l& t% }2 C/ p6 U  |; }4、模拟输入
# Q7 g, i" D7 h$ A5 V5、开漏输出: ?" g4 ^9 u7 L" w: h
6、推挽输出
2 U: C% x- ^* Z8 X, t7 w' o9 ~7、推挽式复用功能( t. H( F1 h) o, ]  B
8、开漏复用功能
9 `+ y! }/ K# `& G每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。
& L- B* p5 K. Q6 Z2 J2 O
. M( b1 `. O5 |# E: b; F$ ?6 l, g 1GM8KWRR}9KIEAKJH~}P.png
* [  M9 C7 S$ L( Z% _7 j) M" v! P$ M& f8 M
FD%P8YL$(RYL$_VE@MPVI`K.png 2 |7 ^- Z9 \: z' ?# y

" H0 h5 Z0 a' D- G& d在 MDK 中是通过一个枚举类型定义的:
' e; y, g7 h7 l/ O5 C  h: H8 B7 }
( y8 H$ |6 P+ f& l9 _7 J0 {1 ~
  1. typedef enum. a- Y" A4 y1 V% z5 A4 j
  2. { GPIO_Mode_AIN = 0x0, //模拟输入
    2 u2 w: B# D1 E! q1 l/ s
  3. GPIO_Mode_IN_FLOATING = 0x04, //浮空输入& Q1 w5 {2 n6 j4 J
  4. GPIO_Mode_IPD = 0x28, //下拉输入  Q, @4 c. y# f' y7 g1 G7 r
  5. GPIO_Mode_IPU = 0x48, //上拉输入
    % G! f; @" R  T, G
  6. GPIO_Mode_Out_OD = 0x14, //开漏输出  ?5 o" L) X8 @% T% a$ X
  7. GPIO_Mode_Out_PP = 0x10, //通用推挽输出
    ' i9 p! B3 M4 c
  8. GPIO_Mode_AF_OD = 0x1C, //复用开漏输出8 s9 n7 p8 k8 w9 m0 O/ l
  9. GPIO_Mode_AF_PP = 0x18 //复用推挽
    9 K4 _6 o0 z/ x) u) E9 E& W
  10. }GPIOMode_TypeDef;
    3 U" @! `$ i+ r2 W
复制代码

% n: G3 y, o4 S3 N输入输出方式作用:
5 @( t2 ^. N+ P/ y& a) m1 ^2 K1)作为普通GPIO 输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。3 q) S% J3 c' D2 \
2)作为普通GPIO 输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。( {8 b2 T7 D- A! W6 g
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
, Q. }! m+ \5 H6 s' P7 L- W1 N4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。, a. N8 E( G2 L0 J' {
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。
5 R" l/ ~# Y0 }5 ~" c) k5 F: N7 D7 P( V! A6 E
二、GPIO寄存器配置
# C+ s2 b( Z' D  d7 c, w1.外设GPIO配置1 E( _' R$ O3 x' T

; i: z: j. l) n$ @5 v5 ^9 Q
$ID{ESIKE~E0)02SZ_B9(8L.png . ^7 T# t, U- Y( Q* E; p0 g

) h2 F0 T6 E' B3 k2.GPIO寄存器

" ?) ^% X! f9 j. d/ z% i2 @7 C1.端口配置低寄存器(GPIOx_CRL)
1 j1 i9 C0 ]2 u  z2 E8 l- a1 D9 c' H. R7 r
(U}(78D3Z20~ZCFYOVZWO.png 0 o% {$ v) J# L

! K! J( K+ A8 m8 v$ V2.端口配置高寄存器(GPIOx_CRH)
' w) S: o* J7 |9 w; B  R  I  ^' G4 E/ e6 S" `* I- H0 ?
2TYTHP9~S{K]JVZQ3A2LV.png
: A" Q3 G4 G! f2 a
5 D1 J  h6 O5 G1 Y3.端口输入数据寄存器(GPIOx_IDR)5 x. V9 @/ H% b6 x: e+ W

8 Q. @. \; K9 @1 I1 z4 `8 }5 c
)KH1)Z0M3VBCP(C~]TINQ)3.png " \0 T5 z1 u$ {# m7 M7 T4 m; B

$ |6 _9 H% h0 E$ n) q3 N4.端口输出数据寄存器(GPIOx_ODR)+ q% _/ W4 q" A

  b; F7 S  v/ e/ h. Q
RWOU4T$P$GGPO01)77EF}2D.png
1 o6 G7 a$ u9 @2 r/ }4 e  I5 j4 R3 E. u) _1 f5 |# R5 u
5.端口位设置/清除寄存器(GPIOx_BSRR)
* ]$ f. ~& O. @; g5 R5 K- _$ V. G! I4 X
D395)QW2I0D~LQ54Q484OND.png
% Z! u# J4 _* c
/ [8 C# l8 @, [) D; p6.端口位清除寄存器(GPIOx_BRR)
6 m- a; @( r' F9 z+ @/ G( f% W1 ~0 F8 d, K) F. B; J+ Q
B7)W438C7}HBROYAFVQ9_)J.png
* O, ]+ t) d' g' f/ g 348fc5373f8746689ca118b728a3580b.png $ u4 o& ^0 \/ [1 B

7 G0 W" T  G, {4 I2 m
收藏 评论0 发布时间:2022-5-9 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版