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

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

[复制链接]
STMCU小助手 发布时间:2022-5-9 19:00
前言
* w! U! l1 }, X1 A开发了好久的STM32,但一直没有总结博客,今天就来总结一下STM32系列博客,也算是自己记的笔记。& `9 S9 _$ A: v- ]4 ?* H
第一篇文章就从GPIO开始
( w1 w% J4 c- s: R) n& tIO口即input & out 输入与输出,单片机控制外设的一个重要方法。7 ^3 H2 {) ]  v3 v, V- o# r; E1 E

4 V+ |( P7 n2 r" K, g) i% n( ?以下参考STM32参考手册记录。! A; X! B+ k  d1 K5 }2 u; f
3 v* S$ l7 ]9 q7 A3 `
提示:以下是本篇文章正文内容,下面案例可供参考3 Z1 P, {5 L$ K# j1 N& T3 g" X, }

, G+ P" K( }- Y0 D; Y7 q6 `1 _+ ~一、GPIO功能描述) W+ B' `8 f# j. |) z
首先 STM32 的 IO 口可以由软件配置成如下 8 种模式:8 P0 Y  P5 C" g/ H  J* M( c
1、输入浮空
* Z" j" D$ u' x3 l; D2、输入上拉
7 h: @9 A  F& ^- I+ U; Q5 o3、输入下拉& V. d* |2 B  F, B, `
4、模拟输入
% I% I8 h  @- ]" F! v4 {2 H5、开漏输出( H0 m& }4 A$ H$ a' B
6、推挽输出' Q. E- M. a& |+ }/ P3 J' w
7、推挽式复用功能
7 M2 H: Y, ^* u! [& G: y3 z' T8、开漏复用功能
! g- r' I; |* J- ?, ~8 U& L每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。
9 d- p) Z3 \  L6 L$ t
8 z) _7 D. H& v6 T 1GM8KWRR}9KIEAKJH~}P.png 9 V) [+ f1 V$ Q
/ ~9 H# f) C  B( Q! Y  f
FD%P8YL$(RYL$_VE@MPVI`K.png
8 v% p* k& e' W# L
. m; }- ]: R3 W4 p在 MDK 中是通过一个枚举类型定义的:2 V, Y3 s: g0 a# S
% [( X/ q  H, a! {- K
  1. typedef enum1 i" H3 L4 g1 [% l8 z' z: ?7 l7 ]
  2. { GPIO_Mode_AIN = 0x0, //模拟输入+ @( T4 [# C! [& b
  3. GPIO_Mode_IN_FLOATING = 0x04, //浮空输入4 g9 }! b4 J8 i0 N
  4. GPIO_Mode_IPD = 0x28, //下拉输入
    # W3 V# r& F! Q
  5. GPIO_Mode_IPU = 0x48, //上拉输入
    - p1 w- l1 X/ }: Y* C' a
  6. GPIO_Mode_Out_OD = 0x14, //开漏输出
    3 `: ~! \! ^) e( v
  7. GPIO_Mode_Out_PP = 0x10, //通用推挽输出- r1 E* B5 E9 e# |/ ^7 r% o' ~
  8. GPIO_Mode_AF_OD = 0x1C, //复用开漏输出
    0 E1 b. G4 ?& g! J) S" t
  9. GPIO_Mode_AF_PP = 0x18 //复用推挽
    ' x7 N9 n& u& Q# ^
  10. }GPIOMode_TypeDef;! `4 t3 F' M1 x: i! I9 y* [
复制代码
! c3 T+ l& S/ ~
输入输出方式作用:
* {0 H: d" ^3 w2 Z1)作为普通GPIO 输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。* B& U$ Q- y2 l
2)作为普通GPIO 输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
8 J$ o/ ?4 g/ b0 U1 ?6 v3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
, E, T: H5 [5 W4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
- u3 ]( l( X- ?$ a3 K5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。
- i7 t5 x* L1 q/ v9 R9 C- c; ^
" j8 Q' N, T7 I1 @二、GPIO寄存器配置0 u7 w. ^7 k$ [7 y% g: E/ G. u5 Z6 @
1.外设GPIO配置
& T6 F% E8 j- w; d
' F  p% P! K+ Z
$ID{ESIKE~E0)02SZ_B9(8L.png
* y2 t! `! R) |6 c7 \2 h0 h9 Z
9 |! P5 j$ [$ W% f2.GPIO寄存器
' O+ W; J" d1 _+ E8 I
1.端口配置低寄存器(GPIOx_CRL). q0 C* o+ \6 F# e$ Q4 u

( v% b$ {9 _+ u$ G0 I2 z8 d: [
(U}(78D3Z20~ZCFYOVZWO.png
5 t) d3 Z) \/ f) H7 C/ M4 l3 E. {% |, g
2.端口配置高寄存器(GPIOx_CRH)
4 G/ P% d0 ~9 o- G' q) ^( I8 f
  P0 n) ?5 K4 }& {, U1 G" R
2TYTHP9~S{K]JVZQ3A2LV.png / v, z4 v6 V) N' i+ [1 V

/ F5 j5 i# Y- g" R8 u/ f3.端口输入数据寄存器(GPIOx_IDR)
, ^; n/ x: I) F+ g" v6 _  U9 x3 I
)KH1)Z0M3VBCP(C~]TINQ)3.png ( ?: h# j. H6 m6 J8 M/ z! n
! l7 O/ o8 z# q! ?* w/ [+ W
4.端口输出数据寄存器(GPIOx_ODR)7 `) \7 @& _- U0 \/ [% ~1 z( s6 M

% m9 `* T- [( y
RWOU4T$P$GGPO01)77EF}2D.png
7 o( r0 R/ c& ^- q: K
# S# |# ~" ~" O8 s5 M6 |. b7 ?5.端口位设置/清除寄存器(GPIOx_BSRR)3 P0 j7 Z3 ~# u
! L! m; [) @% }; H# {
D395)QW2I0D~LQ54Q484OND.png , k, _6 S& O! w7 G& Q0 w

6 K, G- c) L* ?" O$ v! O6.端口位清除寄存器(GPIOx_BRR)- \" Q. S2 e2 g. @" Z# m
/ x9 O; e, Z$ l1 k
B7)W438C7}HBROYAFVQ9_)J.png " a+ |& N1 c% h1 B  ~5 f4 y
348fc5373f8746689ca118b728a3580b.png
6 m' U5 F' }* z2 s8 @! S
& N; g, `$ ?# m/ e
赞 收藏 评论0 发布时间:2022-5-9 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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