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

【经验分享】stm32F1xx(一) GPIO工作原理 (正点原子P11)

[复制链接]
STMCU小助手 发布时间:2021-11-27 10:37
一 GPIO基本原理与寄存器配置5 R) Q2 M% H3 u1 p( Q1 E4 l
1 GPIO基本结构和工作方式9 D! S+ N3 J2 H. H/ @
参考资料:. v) L4 m3 N7 g8 Y) r! ^( V, Q# r
战舰/精英STM32F1开发板! p# w, f: C: P& [/ {. r
《STM32F1开发指南-库函数版本》-第六章 跑马灯实验6.1小节, h* z# S* P6 Y+ q
miniSTM32F1开发板  \8 F+ Q0 x+ W2 w) D
《STM32不完全手册-库函数版本》-第六章 跑马灯实验6.1小节
4 N4 \5 Q3 T% p9 ?5 }% vSTM32F1xx官方资料
+ _& X! p& s" d, A& b+ {3 }1 }' \《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)1 k( z7 p; [+ w
芯片数据手册(datasheet)
7 P- j) g8 q! a3 ~# m, e6 v: ?1 u, ~) D: F4 p" [8 C( d
IO说明:7 C$ Y2 }& T2 a- b  v
战舰版和精英版144引脚如STM32F103ZET6 一共7组IO 每组IO口有16个IO一共112个IO,从GPIOA-GPIOG
7 l& v+ F6 I1 C$ o& omini版如STM32F103RCT6 一共4组IO 一共16*3+3=51个IO GPIOA-GPIOD
6 k) P5 l7 u( r5 V! K' D其中GPIOD只有GPIOD0-D2
* S* X# r' l$ X9 M5 r: ~! z: z) F8 f0 ]/ f4 w# }2 X' I3 P# @
:STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口)
/ Q" D3 p, F* {% a$ ~
' X3 H/ ]5 u( h  d
20200525002658665.png
8 n8 E8 g8 N& ^/ N  P: h* ]
注:大部分IO可容忍5V(有FT标识)0 {7 K7 V8 g0 z: v
$ ?2 O; y4 D' r( j1 }

! t; y8 [/ t2 p3 J# vGPIO工作方式
& |3 m0 n( c' {' d# e4种输入模式:
% `! L7 L1 q3 z! v输入浮空  M( _+ M8 c3 u7 \7 y
输入上拉
2 R* f$ o1 c* w: j. n输入下拉
; c1 M  ]) J, k* N7 P4 s模拟输入
8 a1 h& _$ @! O8 k$ f" t, U9 z. e/ ^! d& E' X: P$ g+ p6 T
4种输出模式:& S6 g; D: L% a9 h; P* p0 ^
开漏输出3 g) B8 [3 ]8 F- A4 n3 q" [9 r
开漏复用功能
* a' D8 \& k6 [  q推挽式输出
# N1 ?5 S7 j6 a) k推挽式复用功能
  |, W1 ]( D, h" K" d& R0 S2 v4 r4 z) N
参考资料:STM32八种IO口模式的区别.pdf. w" `6 d0 m# _' P8 B- u

) w* z) V( u; ], o- Y0 O3种最大翻转速度:
. m# f. F. g5 {2 s9 ^' g2MHZ
' Y( i) W4 N& t+ _: y10MHZ8 I) k- I: t7 C: p2 g
50MHZ
* L! U' ~4 l. j( r& o' J  K" y( C
' Q/ x: |4 L6 R* G$ S
20200525003355257.png
! C4 X7 C+ b( z  G
20200525003442498.png
) E4 A% Q/ n8 f, [" T3 V" O& c
20200525003534339.png

- b3 U' k, w% X* }
2020052500382392.png

" ~  }  _( K7 h' j0 u$ ]:如果写进去1 N-MOS处于关闭,输出值是由外部上拉或下拉决定的,所以读取的值不一定和写进去的一样。( C5 h* U6 q1 D7 w

( ^/ W3 ?7 o* ^7 r/ N3 A
20200525004313574.png

: f- x# ]0 f: ~' c, W- @+ ^* r
20200525004421165.png
; v: U( W; M* F2 c/ M1 p
20200525004500641.png
4 L& I* Q: \, s  U6 d$ Q  S
参考帖子:http://www.openedv.com/posts/list/21980.htm
: G. T, P% f" g/ K
/ D% N5 K/ M0 V$ ^注:! y, J8 ^% H1 t
推挽输出可以输出强高低电平,连接数字器件;
% G! m, L2 V7 U0 I( @- W9 {  G% t0 |开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)0 f( L: p; k0 `; c( b- {

* X/ u1 V$ u& L5 q8 D: E2 GPIO寄存器说明
# r7 A  O/ h$ F9 j' d每组GPIO端口的寄存器包括:
4 Z3 @- W* f. `: m# r两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),
: Q6 |1 e: _9 b- k2 v7 X( c  \两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),% B5 L4 k3 v( t( y/ ?' s5 t( O
一个32位置位/复位寄存器(GPIOx_BSRR),6 O  J5 p6 M9 \5 W+ ~, a
一个16位复位寄存器(GPIOx_BRR),
: L! |7 d0 S2 D. a一个32位锁定寄存器(GPIOx_LCKR).
) I1 [6 X* @# M9 c
. V1 }" j" F+ Q! W5 i每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)
( M8 _2 j7 o! O6 C5 E! R! v- u0 X7 z4 q: \
20200526223200588.png
2 q4 ?: Q$ W5 [* b3 ~
每四位控制一个IO 低两位是MODE 高两位是CNF 具体参数设置需要按表所需。
8 O2 h* y) s! K% r/ r
. I. K1 _$ ~9 _
20200526223736224.png
- d- L) ?( R) Y1 ~9 L1 }
20200526224117548.png

/ a) \" h0 L3 o3 ~
20200526224253747.png

5 M0 Q3 ]+ ~$ t  n9 w3 `输入模式下配置CRL或CRH 需要配合ODR配置成上拉或下拉
$ w: x' w2 ^7 r9 N' z; J
5 o1 }' ~! q* T& l7 c! `
20200526224912527.png

. j0 D3 t6 [2 K" f0 U简单来说 配置BSRR可以单独对位操作,就是配置某一个位为1,其他位为0 时,配置0的不改变它本来的状态。而在ODR配置中,配0配1都会发生相应的改变。+ f% ]9 R5 {+ @$ {+ j3 i/ K  K  j  o
2 N  A8 H( ^9 Z6 V, [. Z3 X& J) f
2020052622533353.png
  [# @/ E3 O( O5 P+ z
BRR相当于BSRR的高16位。
- N8 e* h; N7 I5 o5 K
' {. z5 T3 W, j4 @% B' p7 t- }3 STM32F10x GPIO引脚说明# c2 G* u. @0 R! Q
! y- n" s, B$ R! D/ ?
20200526230040553.png

! o* A" j1 u5 t$ ~5 \! h) p) K9 f5 O
20200526230106659.png

# b4 \/ _. D  [: \) c注:所有IO都可以作为中断输入
0 L8 }+ ]. F' ^, `1 p6 t2 e! D. d- ]

+ s, h4 B$ ~2 n) N& i8 ?
20200525004041800.png
收藏 评论0 发布时间:2021-11-27 10:37

举报

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