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

STM32学习笔记 P1 GPIO 梳理加理解

[复制链接]
STMCU小助手 发布时间:2021-8-13 14:15
STM32引脚说明' R" ?: K6 ^1 z  [# m, f
64引脚—51IO口
# x9 j1 S6 n2 j5 M1 d 1.png   |7 l& a, J- M, ~9 Q& k0 B
: t: l( n' C0 P  ~  t% W$ I3 L( t

* z0 e/ H3 B5 o! bGPIO基本结构
0 [3 w0 N; A( w# `/ I 2.png 5 G8 i, c9 v% q" }/ e& M
+ H: V; S) a7 I' j. ?0 K/ k
% X- j( Z  v$ }# s! O: e
查阅30页(FT)标识:可承担5V电压
' x  A) e: k5 A+ ^ 3.png - O6 ^3 p- Z, y, h6 z6 y  D

9 J5 @, _0 f2 ~; g6 e, @
/ B  X# _# o# v7 x4 S3 |
GPIO工作方式+ o2 @& K- U1 R& h& S
4.png
- {$ _! I- {" d6 A$ @
! }0 W, {' D0 U1 G+ G4 ]7 |; j

; [! Z3 K: M+ q1-4输入( k, P) K' y0 _; h4 h
5-8输出
2 E! R3 s: ~: {" ]! K% ~" z3种最大反转速度:2MHZ、10MHZ、50MHZ
7 C. [# I: n# _5 I* W5 t 5.png
+ r) N7 n$ ^+ [  ~1 |, u, \8 A0 Y" {" c  n$ W  _

. d* g% t$ P5 m' w6 u# K8 `; u8 l* ~- z  b' `

+ ~/ L; ?2 U5 {$ k9 j8 j. p配置9 L" e& @# y* w! Q9 x0 A
配置寄存器CRL CRH& `! ^# M1 \! U2 d' o
6.png + q1 Y% j. P0 ?7 t: [

- U% W; b1 y. A- [- A* A; o/ x
8 @0 o4 ~* l6 G* w( h

. @0 G7 c% C9 P3 U& a. B

2 r, r  [3 N3 `5 g理解:每组IO口有16个IO,分两组,高八位CRH低八位CRL控制,CRH和CRL是两个32位(这里指二进制0或1)寄存器,每一位IO口有四位二进制数,前两位是CNF即输入输出模式,后两位是mode即反转速度。
% Q7 m: ]% |, a9 C% `0 X& {4 ]2 u% \% Y
1 s! b  t( ]: F9 _
控制如下:! u' f- {$ @6 B8 j* r
7.png ) |; I" G7 f# f6 |3 \' m7 ]
) I5 T+ ]8 o' _
3 X. l+ j5 p2 r* }. b; S

+ G6 R7 O; T  f/ `
' f6 A5 P# o; w0 j
端口输出数据寄存器ODR(敲重点)
! D4 _- b* O3 |. s8 t( x* r& G
- ~; X3 `( b& K- a' P1 i- E
* G+ j0 \, z$ W# T; ?% k0 Z% B
理解:ODR是一个端口输出数据寄存器,也只用了低16位。该寄存器为可读写!从该寄存器读取出的数据,可以用于判断当前io口的输出状态,而向该寄存器写数据则可以控制某个io 口的输出电平。7 `  j' t& [% V5 }/ J
8.png , p, Q; ~0 w2 \9 R! c

) ?2 w3 U6 z1 q3 ]- H0 a. Q) f+ v

0 |& Z& U) H- w; \4 }* [% C* G5 Z( i: ~$ K% G
& A% L; W( I$ U% E7 B& m
特技:在输入模式下,控制上拉(1)下拉(0)
; s* l2 E$ R  f  r9 z- ?& H  s  d 9.png
9 S, T6 S/ Q' [9 g! p1 A* Y/ x5 s, e- c, U, c3 i

3 E2 x6 j; ^# }
! k/ }; x/ _9 g; i8 h% S, ?

# U" q  u) {. S5 Z% U端口输入寄存器IDR2 m) b; _$ o( `0 p

! ]  H$ s8 U5 f& _+ B' N4 l

1 O- A3 \* l9 I5 f) J0 J- {% t- n理解:输入模式下,是上拉还是下拉?端口输入寄存器IDR,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。每组IO正是16组,一一对应。要想知道某个io的电平状态,只要读这个寄存器,再看某个位的状态就可以!并且,在输出模式下也可以使用,作用是读取输出状态。# v2 ~8 }) {9 `3 }$ o0 Q# m6 Q
10.png
0 P2 ^5 M- H0 E# M% J, D, y$ O' T3 L! F3 A/ a4 w2 ~7 g2 H

( t/ ^$ R3 L/ c9 d% Q6 w$ i7 u; k4 {/ D. n
' F, n0 B5 e; d2 q
端口位设置/清除寄存器BSRR
6 l, G4 Y$ _* g$ u4 ?  R) ]9 B; W4 U4 l/ e% Y% n
6 f" E5 c% u: Z! p  x" Y0 u0 h6 ?; z
理解:BSRR寄存器和前面提到的ODR寄存器有类似的功能,都可以用来设置端口的输出位是1还是0, 本质上是间接设置ODR。BSRR寄存器低16位对应位设置为1,那么IO口输出为高电平,对应位设置为0,对应IO口不产生任何影响;高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。% A* x0 W# d4 K$ h4 B+ P/ {8 x# ~. J
11.png
$ G/ g  N8 C3 Q0 P( b1 M6 C' d; _( [* R7 K, e: R, L

/ }1 E( l7 I8 I* Y1 n9 {6 z5 s5 y7 S1 r) a6 O+ R" s! A

2 E, f4 n0 d8 `端口位清除寄存器BRR' H+ J# _3 ^' `; P1 i: H8 b

( F+ J; M0 U/ m/ Z0 ?5 F

% {# W8 H! z2 l5 s& m3 D* B和BSRR的高16位作用功能一样的,高16位起作用,高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。
% @. S* s9 P& _* J0 z
: m* Q# Z# D& E( X
) h5 c. m8 V( J1 _' f5 @- O
比较少用$ N. c) `6 o* G! d, q1 O2 f

# C" y9 J  g. m% E
; @7 Z" I$ `+ e3 |6 @- t1 e7 t
端口复用功能
7 H0 r/ \( Y9 n6 W0 v1 f2 }( i5 z, r3 J" B, g
+ `0 H: M6 R: R4 o6 f! @6 u5 A
stm32的大部分端口都有复用功能。复用就是一些端口不仅仅可以作为通用io口,还可以复用为一些外设引脚。比如PA9、PA10可以复用为stm32的串口1引脚。以此最大限度地利用端口资源。
; [9 A* ^* G" `2 b8 e/ T$ Y
5 O7 M( n6 h+ Q% i6 O

( F! e/ [6 ?3 G# p+ r0 z; ~端口重映射功能
# l: w1 F5 {5 r: M2 C, b# `  F3 N+ p8 T
2 ^6 t2 J" {" l  C# c" g
把某些功能引脚映射到其他引脚,比如PA9、PA10通过配置重映射映射到PB6、PB7,以此方便布线。/ Z6 T2 _# V* z* l6 S' d

7 I8 E+ U8 Q  p* i% G4 }
: K* Y3 K" z/ k0 B* r
理解原理是基础,还要结合代码,在实战中学会使用6 z; U! e5 i4 U

8 j' K' _7 |# {
赞 收藏 评论0 发布时间:2021-8-13 14:15

举报

0个回答

所属标签

相似技术帖

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